Docker Swarm - 无法从私人注册表中提取

时间:2017-05-16 14:24:04

标签: docker docker-swarm-mode

我在Swarm群集上运行服务,感谢docker stack deploy --with-registry-auth和这个撰写文件:

version: "3.1"
services:
  builder-consumer:
    image: us.gcr.io/my-gcloud-project/my/image:123
    stop_grace_period: 30m
    volumes:
      - [...]
    environment:
      - [...]
    deploy:
      mode: global
      placement:
        constraints:
          - node.role == worker
    secrets:
      - [...]
secrets:
  [...]

我在部署时工作正常,但是当我稍后向群添加一个工作节点时,新工作者无法提取运行任务所需的图像。系统日志报告:

  

level = error msg =“错误后不继续拉:拒绝:   来自请求的\ 123 \“权限被拒绝   \ “/ V2 /我-gcloud项目/我的/图像/舱单/ 123 \”。 “

     

level = info msg =“翻译”被拒绝:权限被拒绝   \\“123 \\”来自要求   \\ “/ V2 /我-gcloud项目/我的/图像/舱单/ 123 \\”。 \“ 至   \“存储库us.gcr.io/my-gcloud-project/my/image未找到:没有   存在或没有拉取访问权限\“”

     

level = error msg =“pull image failed”error =“repository   未找到us.gcr.io/my-gcloud-project/my/image:不存在或不存在   pull access“module =”node / agent / taskmanager“node.id = ...   service.id = ... task.id = ...

     

level = error msg =“致命任务错误”错误=“没有这样的图片:   us.gcr.io/my-gcloud-project/my/image:123@sha256:......”   module =“node / agent / taskmanager”node.id = ... service.id = ... task.id = ...

但是,当我在该计算机上手动运行docker pull时,它运行正常,因为群集中的每台计算机都通过docker login对我的私有Google注册表进行了身份验证。

因此我的问题是:

  • 为什么添加的工作人员不能从私人注册表中撤出?
  • --with-registry-auth到底做了什么?

非常感谢

注意:节点运行的是Ubuntu 16.04.2 LTS,Docker版本是:

Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Mon Apr  3 18:07:42 2017
 OS/Arch:      linux/amd64
 Experimental: false

1 个答案:

答案 0 :(得分:1)

在我的情况下,我没有使用&#34; - with-registry-auth&#34;运行堆栈,所以我对实例进行了调整,然后我再次使用该选项启动了管理器,现在它正常工作< / p>