首页  >  问答  >  正文

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

Dockerfile

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

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

E: Package 'php5' has no installation candidate
E: Unable to locate package php5-xdebug

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

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

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c4283c57025d 77d786364ebafecb599657f5d96053e5fb6829f22129e5002b3e3eddb672b7ae:latest "/bin/sh -c 'apt-get 28 minutes ago Exited (100) 4 minutes ago reverent_goodall

docker start c428
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c4283c57025d 77d786364ebafecb599657f5d96053e5fb6829f22129e5002b3e3eddb672b7ae:latest "/bin/sh -c 'apt-get 28 minutes ago Up 2 seconds reverent_goodall

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

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

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

有人遇到过?

黄舟黄舟2707 天前828

全部回复(1)我来回复

  • ringa_lee

    ringa_lee2017-04-25 09:05:00

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

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

    回复
    0
  • 取消回复