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



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

以下是部署令牌工作正常的一些情况:

  • 在我的 Mac 上运行 Docker 19.03.8
  • 运行在所述Mac内部的Ubuntu 18.04 Docker容器上
  • 在相同类型的 Amazon Linux EC2 实例上,在具有相同安全组的同一子网中运行

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

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

在每种情况下(Mac 终端除外(,这些都是完全干净的石板:我唯一做的事情是更新操作系统(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容器上运行?因为当你运行docker run -it ubuntu /bin/bash时,你会被扔进一个根壳里。你所做的一切都是sudo.

相关内容

最新更新