Docker Compose:无此图片


122

运行时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"

Answers:


243

旧的缓存导致了此问题,我第一次无法运行此命令,并且docker-compose已经创建的图像,这些图像我看不到docker images

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


2
看看湿婆的回答。想知道为什么要花近一年的时间对此进行改进?来吧
亚当

2
stackoverflow.com/a/43381147/8283848,这将完美地完成魔术(对我来说)
JPG

可能值得一提的是docker-compose rm没有镜像的以下参数id,这与docker rmi #id的情况不同。否则,我无法删除通过docker rmi 2d0c8d6058f4_myprojectcom_app_1
FantomX1

125

在Windows上使用Docker Machine时遇到此错误。

一个容器似乎已经流氓了。docker-compose rm --all导致整个外壳冻结,并且重启Docker Machine也无济于事,这样做时容器仍然显示出来docker-compose ps

解决的办法是执行docker-compose down


更好的方法是仅使用删除失败的图像,docker-compose rm webb webc weba然后拉出或构建新图像
OzzyCzech

1
@OzzyCzech我确定这对您的情况很有用。但是在我的docker-compose rm身上冻结了我的外壳。
马提亚斯·布劳恩

我没有冻结问题,但docker-compose rm --all没有删除所有图像。docker-compose down解决了该问题。(Ubuntu 16)
Raheel

谢谢@MatthiasBraun。它在ubuntu 17.10上为我工作
Raj Kumar N

45

解决这个问题

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

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

查看所有图片

docker images -a

1
问题是缺少图像,因此updown命令不起作用。正确的答案是用于docker-compose rm清除图像,然后再次build-> up
巴尔加夫Nanekalva '17

2
Bhargav先生,如果您没有足够的经验,那么您需要做更多的研究,然后再特别降低答案。或者,您可以至少看到以前的答案(由Matthias Braun撰写),它说的是docker-compose down可以解决该问题。它也和其他人(mac-10.11.5)(docker-17.03.1-ce)一起为我解决了这个问题。
Yogesh Yadav

他的确rm在回答中提到了使用和的方式。
巴尔加夫Nanekalva '17

1
他说rm 冻结了外壳,并没有为他解决问题。
Yogesh Yadav

1
效果比更好docker-compose rm。谢谢!
varagrawal

19

通过为我解决了问题

docker-compose ps

找到有问题的容器名称,然后(注意在docker此处运行)

docker rm <problematic container name>

2

在Ubuntu 18.04.4和Docker 19.03.6版上

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

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

命令在运行“当前锁”时冻结了我的终端。

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

$ docker-compose ps

并逐个删除有问题的容器,运行:

$ docker rm <name_of_the_problematic_container>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.