首页 > 解决方案 > 来自私有本地注册表的图像不会填充到 docker swarm 中的工作节点

问题描述

注册表是作为管理节点上的服务创建的,具有以下参数:

docker service create --name registry --constraint 'node.labels.registry==true' --publish published=5000,target=5000 --replicas 1 registry:2

docker service ls显示它在其他服务中的存在。

将本地图像添加到注册表:

docker tag backend:1.0 localhost:5000/backend:1.0

docker push localhost:5000/backend:1.0

docker tag frontend:1.0 localhost:5000/frontend:1.0

docker push localhost:5000/frontend:1.0

到目前为止一切都很成功。可以通过浏览器或以下方式访问存储库 API curl

 curl localhost:5000/v2/_catalog
{"repositories":["backend","frontend"]}

但是,当我的应用程序堆栈使用命令创建时docker stack deploy -c ttv.yml --with-registry-auth ttv,工作节点无法看到存储库中的图像:

docker service ps ttv_frontend --no-trunc
[...]
[worker1]: No such image: localhost:5000/frontend:1.0@sha256:4cdb...

另外,我不能从任何工人那里获得curllocalhost:5000/v2/_catalog

整个集群在 OpenStack 上运行。是否有可能禁用某些端口?还是我在配置注册表时犯了错误?

引擎版本为 20.10.8。

标签: dockerdocker-swarmopenstackdocker-registry

解决方案


推荐阅读