Docker 撰写:没有这样的图片

Docker Compose: No such image

当我 运行 docker-compose up 时,我得到这个错误:

root@ubuntu:/home/benson/Docker/HaproxyMy# docker-compose up
Recreating 950ddc308278_950ddc308278_950ddc308278_950ddc308278_950ddc308278_haproxymy_webb_1
Recreating 485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_485800bdf3a1_haproxymy_webc_1
Recreating 2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_2b3338d88716_haproxymy_weba_1

ERROR: for webb  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

ERROR: for webc  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

ERROR: for weba  No such image: sha256:15853e771e7ca3f5eecee38fcf97efd3ee164c1b66e2ef543d9985a04e78e099

docker-compose.yml:

weba:
    build: ./web
    expose:
        - 80

webb:
    build: ./web
    expose:
        - 80

webc:
    build: ./web
    expose:
        - 80


haproxy:

    image: haproxy:latest

    volumes:

        - ./haproxy:/haproxy-override
        - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    links:

        - weba
        - webb
        - webc
    ports:

        - "80:80"
        - "70:70"
    expose:

        - "80"
        - "70"

使用 weba、webb 和 webc 的示例,如“How to use Docker Compose to run complex multi container apps on your Raspberry Pi”假设您正在构建这些图像。

weba:
  build: .
  expose:
    - 80

意味着您有(在 /home/benson/Docker/HaproxyMy 中)一个 Dockerfile like this one 将由构建解释。构建这些图像。

旧缓存导致了这个问题,我第一次运行这个命令失败了,docker-合成了我在docker images中看不到的已经创建的图像。

需要从 docker-compose ps 开始检查,并使用此命令删除所有旧图像 docker-compose rm,然后重新构建。

我在 Windows 上使用 Docker Machine 时遇到了这个错误。

一个容器似乎出了问题; docker-compose rm --all 导致整个 shell 冻结并重新启动 Docker 机器也没有帮助,执行 docker-compose ps 时容器仍然出现。

解决方案是执行docker-compose down

解决这个问题

docker-compose -f docker-compose-filename.yml down

docker-compose -f docker-compose-filename.yml up

查看所有图片

docker images -a

通过

为我解决了问题
docker-compose ps

找到有问题的容器名称然后(注意运行docker这里)

docker rm <problematic container name>

在 Ubuntu 18.04.4 和 Docker 版本 19.03.6

我尝试了 Yogesh Yadav 的回答,但是

$ docker-compose -f docker-compose-filename.yml up

命令在 运行 'current locks'.

上冻结了我的终端

我能够通过列出容器来解决它:

$ docker-compose ps

并将有问题的容器一一移除,运行:

$ docker rm <name_of_the_problematic_container>