【问题标题】:Docker Compose: No such imageDocker Compose:没有这样的图像
【发布时间】:2016-09-24 02:03:23
【问题描述】:

当我运行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"

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

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

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

    【讨论】:

    • 也看看 Shiva 的回答。想知道为什么花了将近一年的时间来改进这个?来吧,所以!
    • stackoverflow.com/a/43381147/8283848 这将完美地发挥作用(对我而言)
    • 可能会很好地提到 docker-compose rm 没有图像的以下参数 id,这与 docker rmi #id 的情况不同。否则,我无法删除已通过 docker rmi 2d0c8d6058f4_myprojectcom_app_1 退出并删除的 docker-compose 图像的现有名称
    【解决方案2】:

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

    一个容器似乎失控了; docker-compose rm --all 导致整个 shell 冻结并重新启动 Docker Machine 也无济于事,在执行 docker-compose ps 时容器仍然出现。

    解决方案是执行docker-compose down

    【讨论】:

    • 更好的方法是只删除带有docker-compose rm webb webc weba 的失败图像,然后拉取或构建新图像
    • @OzzyCzech 我相信这对您的情况很有用。但在我的docker-compose rm 中冻结了我的外壳。
    • 我没有遇到冻结问题,但 docker-compose rm --all 没有删除所有图像。 docker-compose down 解决了这个问题。 (Ubuntu 16)
    • 谢谢@MatthiasBraun。它在 ubuntu 17.10 上对我有用
    【解决方案3】:

    解决这个问题

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

    查看所有图片

    docker images -a
    

    【讨论】:

    • 问题在于缺少图像,因此updown 命令不起作用。正确的答案是使用docker-compose rm清除图像并再次使用build -> up
    • Bhargav 先生,如果您对该技术没有足够的经验,您需要在否决答案之前做更多的研究。或者您至少可以看到以前的答案(由 Matthias Braun 提供),这与 docker-compose down 将解决问题相同。它也为我和其他人解决了这个问题(mac - 10.11.5)(docker - 17.03.1-ce)。
    • 他确实提到了使用rm 并在他的回答下的评论中提到。
    • 他在说 rm 冻结他的外壳,并没有为他解决问题。
    • 这比docker-compose rm 效果更好。谢谢!
    【解决方案4】:

    问题解决了

    docker-compose ps
    

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

    docker rm <problematic container name>
    

    【讨论】:

      【解决方案5】:

      在 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>
      

      【讨论】:

        【解决方案6】:

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

        weba:
          build: .
          expose:
            - 80
        

        意思是你(在/home/benson/Docker/HaproxyMy中)有一个Dockerfilelike this one,它将由 build 解释。构建这些图像。

        【讨论】:

        • 谢谢,我找到了根案例,旧缓存导致了这个问题,谢谢。下面我会写步骤。
        猜你喜欢
        • 1970-01-01
        • 2020-03-09
        • 1970-01-01
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        • 1970-01-01
        相关资源
        最近更新 更多