【问题标题】:docker stack deploy results in "No such image error"docker stack deploy 导致“没有这样的图像错误”
【发布时间】:2017-11-24 09:29:12
【问题描述】:

我正在使用 docker swarm 并希望使用 docker-compose 部署服务。我的服务使用了一个名为 myuser/myrepo:mytag 的自定义映像,我成功地将它部署到 Docker-Hub 到一个私有存储库。

我的 docker-compose 看起来像这样:

version: "3.3"

services:

  myservice:
    image: myuser/myrepo:mytag
    ports:
      - "8080:8080"

在执行之前,我成功拉取了镜像:docker pull myuser/myrepo:mytag

当我运行docker stack deploy -c docker-compose.yml myapp 时,我总是收到错误:"No such image: myuser/myrepo:mytag"

有趣的是,仅使用 docker-compose up(即没有 swarm 模式)运行相同的文件,一切正常,服务启动。

我真的不明白为什么会失败? 我已经尝试用docker system prune 清理docker,然后repull我的图像,没有成功。

【问题讨论】:

    标签: docker docker-compose docker-swarm docker-stack


    【解决方案1】:

    已经找到解决方案。 我的图像托管在私人存储库中。 除了 swarm manager(我在其中执行命令)之外,我还有一个正在运行的 swarm worker。

    当我运行docker stack deploy -c docker-compose.yml myapp docker 时,将服务部署到工作节点(不是我想的管理节点)。 在工作节点上,docker 没有凭据来从私有存储库中提取图像。 因此,要解决此问题,要么传递标志 --with-registry-auth(它将存储库的凭据推送到工作节点),要么确保将服务部署到存在映像的节点。

    见:https://docs.docker.com/engine/reference/commandline/deploy/

    【讨论】:

    • 嗨,我使用docker stack deploy --prune --with-registry-auth --resolve-image=always --compose-file docker-compose.yml stack_name,我经常收到这个错误。这是非常随机的,有时所有节点都得到图像,有时没有。这让我发疯了一段时间。你知道问题可能是什么吗?我也在使用私人注册表。
    【解决方案2】:

    我想添加另一个导致相同结果(错误消息)的场景,这样人们就不会把头撞到墙上。

    另一种可能是您尝试使用insecure registry 部署映像,但忘记在拉取映像的服务器上编辑daemon.json

    如果是这样,让这个答案起到提醒作用;并为您节省一些时间。

    【讨论】:

      【解决方案3】:

      在公司防火墙后面时,我在 mac 上遇到了类似的问题。

      我只有在直接连接到互联网后才能解决。

      只是为了更新,当我在 VPN 上时,我可以在没有任何代理设置的情况下访问互联网,并且可以使用 docker run 下载(docker)图像。问题仅限于docker-compose

      我确实尝试在我的 VM 中将 resolv.conf 中的名称服务器更改为 8.8.8.8,但问题没有解决。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-24
        • 1970-01-01
        • 2015-05-19
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-25
        相关资源
        最近更新 更多