docker service create找不到图像

ajl*_*ajl 6 docker docker-swarm

当我运行docker service时创建--mode global foo myrepo/foo-img:0.1,它的工作原理是它启动服务,但是如果swarm中的节点上不存在foo-img:0.1,则该节点会发出以下命令错误:

<containerid>   \_ foo    myrepo/foo:0.1  <snip>  "No such image: myrepo/foo-img:0.1"
Run Code Online (Sandbox Code Playgroud)

如果我在每个节点上拉myrepo/foo-img:0.1,那么它可以正常工作.

除了在群中的每个节点上拉图像之外,还有其他解决方法吗?

ajl*_*ajl 7

答案其实很简单.使用--with-registry-auth参数.此参数使用与当前会话相同的身份验证.所以,要简单地完成这项工作:

# docker login -u xxx -pass yyy https://myrepo.com
# service create --with-registry-auth foo myrepo.com/foo-img:0.1
Run Code Online (Sandbox Code Playgroud)

假设您已成功登录,服务将根据需要将映像从repo提取到每个节点.不确定幕后发生了什么,但它适用于部署到群集中当前的所有节点!感谢github/docker的帮助!