GitLab容器注册表部署令牌似乎不适用于运行在x86实例上的最新Ubuntu18.04 x86 AMI (ami-085925f297f89fce1
),但它们确实在其他Ubuntu18.04环境和具有相同安全组设置的其他AMI上工作。我尝试了多个令牌和多个实例,试图排除用户错误。
我想知道这个问题是否为其他人所重复,如果是的话,是什么原因造成的。最有可能的解释是一个bug,但它也可能是Ubuntu的一些安全特性,我不理解。错误是这样的:
> sudo apt update
> sudo apt install -y docker.io
> docker login -u <the_username> -p <the_token> registry.gitlab.com
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/auth: dial unix /var/run/docker.sock: connect: permission denied
以下是一些部署令牌运行良好的情况:
运行在Ubuntu18.04 Docker容器上的
。
在Ubuntu和Amazon环境中,Docker版本为19.03.6。
为了完全排除安全组的问题,我简要地尝试了Ubuntu EC2实例的一个大范围开放的安全组(所有打开的入口端口和CIDR EC2实例的出口)。它没有效果。
在每种情况下( Mac终端除外),这些都是完全干净的板条:我所做的唯一事情就是更新操作系统(sudo apt update
或sudo yum update
,安装Docker,然后尝试使用docker login -u <the_username> -p <the_token> registry.gitlab.com
进行身份验证)。
在所有情况下,除了Ubuntu18.04 EC2实例之外,我很快就得到了Login Succeeded
。然而,对于Ubuntu EC2实例,我得到了上面的错误。
它会为其他人繁殖吗?是什么引起的?
发布于 2020-06-03 16:17:04
答案,正如它经常是,是sudo
。
在Linux上,您需要将sudo
与docker login
一起使用,因为它将凭据写入明文系统文件。推测,您不需要在Mac上使用sudo
,因为Desktop比将凭据存储在明文中做的更聪明。
在Amazon上,您可以在没有sudo的情况下进行身份验证,但它并不有效:当您要进行私人回购时,您将得到access denied
,就像您从未登录过一样。在Ubuntu上,它只是由于一个隐秘的错误而中止。可以说,后者更好,但这两种结果都留下了一些有待改进的地方。
为什么它在运行在MacOS中的Ubuntu容器上工作呢?因为当您运行docker run -it ubuntu /bin/bash
时,您会被插入根外壳。你所做的一切都是sudo
。
https://stackoverflow.com/questions/62181633
复制相似问题