GitLab 部署令牌在 EC2 Ubuntu 18.04 AMI 上失败,其他任何地方都失败

GitLab deploy token fails on EC2 Ubuntu 18.04 AMI, and nowhere else

GitLab 容器注册表部署令牌似乎不适用于 EC2 实例上的最新官方 Ubuntu 18.04 x86 AMI (ami-085925f297f89fce1) 运行,但它们确实适用其他 Ubuntu 18.04 环境,以及具有相同安全组设置的其他 AMI。我尝试了多个令牌和多个实例来尝试排除用户错误。

我想知道这个问题是否会在其他人身上重现,如果是,是什么原因造成的。最可能的解释是错误,但也可能是 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

以下是部署令牌运行良好的一些情况:

在 Ubuntu 和 Amazon Linux 环境中,Docker 版本为 19.03.6。

为了完全排除安全组问题,我简要地为 Ubuntu EC2 实例尝试了一个完全开放的安全组(所有端口都为 CIDR 0.0.0.0/0 的入口和出口打开)。没有效果。

在每种情况下(Mac 终端除外),这些都是完全干净的石板:我所做的唯一事情就是更新 OS(sudo apt updatesudo yum update ,安装 Docker,然后尝试使用 docker login -u <the_username> -p <the_token> registry.gitlab.com.

进行身份验证

除了 Ubuntu 18.04 EC2 实例,我很快就得到了 Login Succeeded。但是,对于 Ubuntu EC2 实例,我遇到了上述错误。

是否为他人复制?可能是什么原因造成的?

答案通常是 sudo

在 Linux 上,您需要将 sudodocker login 一起使用,因为它会将您的凭据写入纯文本系统文件。据推测,您不需要 Mac 上的 sudo,因为 Docker Desktop 做的事情比以明文形式存储凭据更聪明。

在 Amazon Linux 上,您可以在没有 sudo 的情况下进行身份验证,但它不会坚持:当您去拉一个私人仓库时,您会 access denied 就像您从未登录过一样. 在 Ubuntu 上,它只是因一个神秘错误而中止。可以说,后者更好,但两种结果都有不足之处。

为什么它在 MacOS 内的 Ubuntu 容器 运行ning 上工作?因为当你 运行 docker run -it ubuntu /bin/bash 时,你被插入到根 shell 中。你所做的一切都是 sudo.