运行docker-compose up -d提示No such image错误
本文讲述了如何解决当删除了新编排出的镜像后再运行docker-compose up -d无法找到镜像的问题
刚开始接触docker-compose技术,今天烧了一下通过Dockerfile来启动容器。
Dockerfile内容如下:
#基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/weilai/tomcat7:latest
#维护者信息
MAINTAINER peifei@126.com
#镜像操作命令
#RUN ......
#容器启动命令
CMD "sh /usr/local/tomcat7/bin/startup.sh"
docker-compose.yml内容如下:
tomcat7:
build: .
volumes:
- /media/root/DockerDisk/webapps:/usr/local/tomcat7/webapps
ports:
- "8080:8080"
然后在终端中运行docker-compose up -d后经过了漫长的等待终于运行成功了。
没想到虽然运行成功了,但是却没达到我想要的效果(我是想用已有的tomcat7镜像自动启动容器并启动里面的tomcat),生成了一个新的镜像,但却没有自动启动tomcat:
这个镜像与下面那个镜像的内容是相同的,于是我就把新生成镜像给删除了。
这时我再将docker-compose.yml里的内容修改回原来的基于image的方式:
tomcat7:
image: registry.cn-hangzhou.aliyuncs.com/weilai/tomcat7:latest
volumes:
- /media/root/DockerDisk/webapps:/usr/local/tomcat7/webapps
ports:
- "8080:8080"
这时再运行docker-compose up -d后却提示如下错误:
这就奇怪了,明明我改为使用registry.cn-hangzhou.aliyuncs.com/weilai/tomcat7:latest作为镜像来源,为什么会提示镜像sha256:0564a791bac418289213f339afde48d87c8111dbcf908148b1668cf205f836f9不存在哪?
经过一顿苦找,终于在国外的网站上发现了解决方案。原来是因为我删除镜像的方式不对,可通过如下方式解决:
在终端中先运行docker ps -a命令,查看容器历史启动记录:
上图中红框内的容器就是一开始通过docker-compose+Dockerfile生成的,于是在终端中执行如下命令:
然后再执行docker-compose up -d后终于成功了:
这下长记性了,如果是通过docker-compose编排出的镜像,应该还通过docker-compose rm来删除,这样就不会出现上述的问题了。
参考网址:https://github.com/docker/compose/issues/1113
更多推荐
所有评论(0)