Docker 堆栈部署不会从 ghcr 中提取映像



编辑:永不终止,请参阅下面的答案


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

发生了什么:

  • 我为一个宠物项目创建了一个单节点群,并成功登录了ghcr和docker hub
  • 我在标准mysql镜像的基础上创建了一个简单的docker镜像,并将其发布为一个私人ghcr包
  • 我在本地机器上创建了一个docker上下文,指向我从群节点转发的docker套接字
  • 使用该上下文,当我运行docker image pull ghcr.io/my-name/my-image:latest时,它运行良好,并将图像下拉到群节点
  • 然后我移除图像并运行CCD_ 2(下面包括的test.yml(;没有这样的图像:ghcr.io/我的名字……">

这似乎与身份验证有关,但不清楚具体是什么。。。。我还测试了一个公共ghcr包,它运行良好,所以区别似乎是公共和私人。

以下是test.yml的样子(您可以访问的任何私人ghcr包的子my-name/my-image(:

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时,它不会自动提取图像,即使我可以手动成功提取图像

令人尴尬的表情-我似乎陷入了一张假阴性的网中。最后,它就像在我的部署命令中添加--with-registry-auth一样简单,这是互联网上许多人以前说过的。我已经做了好几次了,但都不起作用,所以我以为不是这样,但不管出于什么原因,我又试了一次,现在似乎起作用了。我不喜欢把SO和副本搞得一团糟。

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

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

我(从Bret Fisher那里(了解到,登录只是一个客户端概念,它始终是向引擎发送身份验证信息的客户端,因此如果您通过本地docker客户端访问集群,则无需在集群所在的远程机器上运行docker login

最新更新