docker build -t .失败后,遇到奇怪问题

浏览:69日期:2023-02-22

问题描述

Dockerfile

FROM ubuntuRUN apt-get update && apt-get install -y mysql-server php5 php5-xdebug

创建失败,因为找不到几个包docker build -t docker_image1 .

E: Package ’php5’ has no installation candidateE: Unable to locate package php5-xdebug

该操作生成了一个没名字的imageREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE<none><none> 77d786364eba25 minutes ago 122 MB

无法删除,因为某个容器在用它docker rmi 77d7 -fError response from daemon: Conflict, cannot delete 77d786364eba because the container c4283c57025d is using it, use -f to forceError response from daemon: No such image: -fFATA[0000] Error: failed to remove one or more images

docker ps -aCONTAINER IDIMAGE COMMANDCREATED STATUS PORTS NAMESc4283c57025d77d786364ebafecb599657f5d96053e5fb6829f22129e5002b3e3eddb672b7ae:latest '/bin/sh -c ’apt-get 28 minutes ago Exited (100) 4 minutes ago reverent_goodall

docker start c428docker psCONTAINER IDIMAGE COMMANDCREATED STATUS PORTS NAMESc4283c57025d77d786364ebafecb599657f5d96053e5fb6829f22129e5002b3e3eddb672b7ae:latest '/bin/sh -c ’apt-get 28 minutes ago Up 2 seconds reverent_goodall

启动容器后,为何连不上?试过很多次了,都不行。 是否只能删除容器和镜像,不能基于c428镜像做修改么?

刚才明明显示已经启动的,为何连不上呢?docker attach c428FATA[0000] You cannot attach to a stopped container, start it first

此时docker ps发现容器停止了。 启动容器成功,连接连不上,同时容器自动停止,这是什么情况?

有人遇到过?

问题解答

回答1:

使用docker build构建镜像时,其实是基于基础镜像创建容器,并在这个容器中运行第一条指令,之后将保存为镜像,并删除容器。之后又基于这个新镜像创建容器,执行第二条指令,保存为镜像,删除容器,删除上一个镜像(只删除了镜像信息,镜像层没有删除)。如果反复,知道最后一个指令结束,得出的就是目标镜像了。

那么如果构建过程中出现了意外,那么就会残留下一个意外退出的容器,以及它所依赖的上一层镜像。其实这些都是并没有什么*用的东西,我们直接删除即可。因为容器依赖了镜像,删除镜像前先删除容器。

相关文章: