当build镜像失败时,能不能只删除构建失败的那个镜像,而留着源镜像呢


比如,我的dockerfile:
FROM nginx
COPY sources.list /etc/apt/sources.list 
RUN mkdir /nginx_conf
COPY  /nginx_conf/conf /etc/nginx/conf.d/my.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf


我这个镜像来自nginx
,在我docker-compose up 的时候,因为某些原因导致失败
比如,我在修改nginx配置文件的时候,需要调试效果,当我修改了配置文件,就必须重新build,否则那个容器里的配置文件版本就是之前的旧的

这个时候,我通常,都会执行下面的脚本,删除镜像,然后重新运行docker-compose up
keyWord='my' 

sudo docker kill $(sudo docker ps  |grep "my" | awk '{print $1}')
sudo docker ps -a
sudo docker rm `sudo docker ps --no-trunc -aq` 
sudo docker ps -a  
sudo docker images 
sudo docker rmi $(sudo docker images |grep "my" | awk '{print $1}')  
sudo docker images


这个时候,docker会去重新拉取所有镜像,会浪费好多时间

目前,我能想到的办法是:
1. dockerfile 采用软连接的方法链接配置文件,而不是COPY (但这个方案,我调试频繁的时候似乎会出错,所有后来没有用这个方案)
2. 执行脚本删除所有镜像,然后重新执行docker-compose up (这个方案弊端很严重,每次修改要从头下载镜像)

请问大家还有别的办法吗
另外请问大家平时是如何弄的呢
已邀请:

subchen

赞同来自: dockerlove123


你不应该删除镜像,而是删除容器

ozbillwang

赞同来自:


啥都不用做啊,继续build就行。

dockerlove123 - www.guanliangguoshuguan.com

赞同来自:


谢谢

要回复问题请先登录注册