Docker stack deploy 不从 ghcr 拉取镜像

Docker stack deploy doesn't pull images from ghcr

编辑:没关系,请参阅下面的答案


互联网上似乎有很多关于此的噪音(是的,我已经阅读了所有堆栈溢出和 github 问题),但没有太多关于我的特定问题的信号。另外,我是 docker 的新手,所以可能是用户错误,但是 none 很明显....

这是正在发生的事情:

它似乎确实与身份验证有关,但不清楚具体是什么......我还使用 public ghcr 包进行了测试,它运行良好,所以差异似乎是 public 与私有。

这是 test.yml 的样子(sub my-name/my-image 用于您有权访问的任何私有 ghcr 包):

version: "3.9"

services:
    test-db:
        image: ghcr.io/my-name/my-image:latest
        networks:
            - test-backend
        labels:
            test.app: test

networks:
    test-backend:
        driver: overlay

同样,问题是当我运行docker swarm deploy时,它不会自动拉取镜像,即使我可以手动拉取镜像。

完全尴尬的捂脸 - 我好像陷入了false-negatives的网络中。最后就是在我的deploy命令中加上--with-registry-auth就这么简单,之前网上很多人都说过。我已经这样做了好几次,但都没有用,所以我认为不是那样,但是出于某种原因,我又试了一次,现在似乎可以用了。我不喜欢用重复的东西把 SO 搞得一团糟。

对于其他人,正如@Chris Becke 在上面的评论中指出的那样,完整的命令将是:

docker stack deploy --with-registry-auth -c test.yml test

我(从 Bret Fisher)了解到的一点是,登录只是一个客户端概念,并且始终是客户端向引擎发送身份验证信息,所以 运行 docker login 如果您通过 local docker 客户端访问 swarm,则不需要在 swarm 所在的远程机器上。