`docker pull`返回`拒绝:来自私人gitlab注册表的禁止访问

问题描述:

我有一个Dockerfile这将要实现FROM私人注册表的图像。我没有建立与Docker version 1.12.6, build 78d1802docker-compose version 1.8.0, build unknown任何问题这个文件,但在另一台机器具有Docker version 17.06.1-ce, build 874a737docker-compose version 1.16.1, build 6d1ac21docker-compose build回报:`docker pull`返回`拒绝:来自私人gitlab注册表的禁止访问

FROM my.private.gitlab.registry:port/image:tag 
http://my.private.gitlab.registry:port/v2/docker/image/manifests/tag: denied: access forbidden 

docker pull my.private.gitlab.registry:port/image:tag返回相同。

请注意,我试图获得my.private.registry:port/image:taghttp://my.private.registry:port/v2/docker/image/manifests/tag已被捕获。

+3

如果这是一个经过身份验证的注册表,那么您需要在您正在构建的机器上运行docker login '。这只需要做一次 –

+0

@TarunLalwani,它返回'未经授权:需要验证'。也许它与我在gitlab上的权限有关。我会检查并通知你。 –

+0

@TarunLalwani,你已经指出了确切的原因。请张贴它作为答案,所以我可以批准。 –

如果这是一个经过身份验证的注册表,那么您需要在正在构建此计算机的计算机上运行docker login <regitsryurl>

这只需要为每个主机完成一次。然后该命令将文件缓存在文件中

$ cat ~/.docker/config.json 
{ 
    "auths": { 
     "https://index.docker.io/v1/": { 
      "auth": "......=" 
     } 
    } 
} 

我注意到您的URL方案使用http协议 - Docker需要配置为允许不安全的注册表。

创建或修改您daemon.json(在以下位置的一个必填项):

的Linux:/etc/docker/

的Windows:C:\ProgramData\Docker\config\

随着内容:

{ 
    "insecure-registries" : [ "my.private.gitlab.registry:port" ] 
} 

然后重启Docker(不只是终端会话),然后再试一次。

一旦你登录时:

docker login my.private.gitlab.registry:port 

tarun-lalwani的回答,这应该然后添加AUTH到配置,以供将来使用(docker pull的等)。