Docker:Swarm工作节点找不到本地构建的图像

前端之家收集整理的这篇文章主要介绍了Docker:Swarm工作节点找不到本地构建的图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

也许我错过了什么,但我制作了一个本地的码头图像.我有一个3节点的群集并且正在运行.两名工人和一名经理.我使用标签作为约束.当我通过约束向其中一个工作人员启动服务时,如果该图像是公开的,它将完美地工作.

也就是说,如果我这样做:

  1. docker service create --name redis --network my-network --constraint node.labels.myconstraint==true redis:3.0.7-alpine

然后,redis服务被发送到其中一个工作节点,并且功能完备.同样,如果我运行我的本地构建的图像没有约束,因为我的经理也是一个工人,它被安排到经理并运行得非常好.但是,当我添加约束它在工作节点上失败时,从docker service ps 2l30ib72y65h我看到:

  1. ... Shutdown Rejected 14 seconds ago "No such image: my-customized-image"

有没有办法让工作人员可以访问群组管理器节点上的本地图像?它是否使用可能未打开的特定端口?如果没有,我应该做什么 – 运行本地存储库?

管理器节点不会从自身共享本地映像.您需要启动注册表服务器(或用户hub.docker.com).所需的努力不是很重要:

  1. # first create a user,updating $user for your environment:
  2. if [ ! -d "auth" ]; then
  3. mkdir -p auth
  4. fi
  5. touch auth/htpasswd
  6. chmod 666 auth/htpasswd
  7. docker run --rm -it \
  8. -v `pwd`/auth:/auth \
  9. --entrypoint htpasswd registry:2 -B /auth/htpasswd $user
  10. chmod 444 auth/htpasswd
  11. # then spin up the registry service listening on port 5000
  12. docker run -d -p 5000:5000 --restart=always --name registry \
  13. -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \
  14. -v `pwd`/registry:/var/lib/registry \
  15. -e "REGISTRY_AUTH=htpasswd" \
  16. -e "REGISTRY_AUTH_HTPASSWD_REALM=Local Registry" \
  17. -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  18. -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \
  19. registry:2
  20. # then push your image
  21. docker login localhost:5000
  22. docker tag my-customized-image localhost:5000/my-customized-image
  23. docker push localhost:5000/my-customized-image
  24. # then spin up the service with the new image name
  25. # replace registryhost with ip/hostname of your registry Docker host
  26. docker service create --name custom --network my-network \
  27. --constraint node.labels.myconstraint==true --with-registry-auth \
  28. registryhost:5000/my-customized-image

猜你在找的Docker相关文章