当我运行 docker service create --mode global foo myrepo/foo-img:0.1 时,它会启动服务,但如果 foo-img:0.1 在 swarm 中的某个节点上不存在,则该节点发出以下错误:
<containerid> \_ foo myrepo/foo:0.1 <snip> "No such image: myrepo/foo-img:0.1"
如果我在每个节点上拉 myrepo/foo-img:0.1 ,那么它工作正常。
除了在 swarm 中的每个节点上拉取图像之外,还有其他解决方法吗?
最佳答案
答案其实很简单。使用 --with-registry-auth
参数。此参数使用与当前 session 相同的身份验证。因此,要使这项工作变得简单:
# docker login -u xxx -pass yyy https://myrepo.com
# service create --with-registry-auth foo myrepo.com/foo-img:0.1
假设您成功登录,该服务将根据需要将图像从 repo 拉到每个节点。不确定幕后究竟发生了什么,但它适用于部署到当前集群中的所有节点!感谢 github/docker 人员的帮助!
关于docker service create 找不到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899074/