也许我错过了一些东西,但是我做了一个本地Docker镜像。我有一个3节点的群集,并正在运行。两名工人和一名经理。我使用标签作为约束。当我通过约束向其中一名工作人员启动一项服务时,如果该图像是公开的,它就可以很好地工作。Docker:Swarm Worker节点没有找到本地构建的镜像
也就是说,如果我做的:
docker service create --name redis --network my-network --constraint node.labels.myconstraint==true redis:3.0.7-alpine
然后Redis的服务发送给工作节点之一,是功能齐全。同样,如果我在没有约束的情况下运行本地构建的映像,由于我的经理也是一名工作人员,因此它将被安排到经理并运行得非常好。然而,当我添加它的工作节点上失败的约束,从docker service ps 2l30ib72y65h
我看到:
... Shutdown Rejected 14 seconds ago "No such image: my-customized-image"
有没有一种方法,使工作人员可以访问本地图像群的管理节点上?它是否使用可能未打开的特定端口?如果不是,我该怎么做 - 运行一个本地存储库?
甜 - 谢谢!在我接受作为答案之前,(我不喜欢不一致!),管理器节点是否看到本地映像(不是来自docker run,而是来自docker service create)并且Worker节点不? – JoeG
从用户的角度来看,也许。但从代码角度来看,每个Docker主机都是独立的环境。在构建时,您将在主机上创建该映像,而不是在群集上。 “服务创建”的逻辑是首先使用主机上缓存的内容,然后回退到从注册表中提取该映像。这恰好与'docker run'具有相同的行为。 – BMitch
我可能会丢失一些东西,但群中的工作节点如何引用此注册表/映像?我试着在我的yml文件中放入localhost:5000/my/image,但我的工作节点仍然找不到图像。有没有办法让这个工作无需登录到工作节点? –