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

问题描述 投票:1回答:1

GitLab 容器注册表部署令牌在最新的官方 Ubuntu 18.04 x86 AMI(ami-085925f297f89fce1)在EC2实例上运行,但它们在其他Ubuntu 18.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

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

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

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

为了彻底排除安全组的问题,我简单地尝试了一个大范围开放的安全组(CIDR的所有入口和出口端口都是开放的)。0.0.0.0/0)的Ubuntu EC2实例。这没有任何影响。

在每种情况下(除了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实例,我得到了上述错误。

其他人也会出现这种情况吗?可能是什么原因造成的?

docker amazon-ec2 gitlab ubuntu-18.04
1个回答
0
投票

答案,就像它经常出现的那样,就是 sudo.

在Linux上,你需要使用 sudodocker login因为它将你的凭证写入一个纯文本系统文件。据推测,你不需要 sudo 在Mac上,因为Docker Desktop做了一些更聪明的事情,而不是将证书存储在明文中。

在Amazon Linux上,你可以不使用sudo进行身份验证,但它并不稳定:当你去拉一个私有的repo时,你得到的是 access denied 就像你从未登录过一样。在Ubuntu上,它只是以一个神秘的错误中止。可以说,后者更好,但这两种结果都有不足之处。

为什么在MacOS内部运行的Ubuntu容器上能成功呢?因为当你运行 docker run -it ubuntu /bin/bash你会被塞进一个根壳里。你所做的一切 sudo.

© www.soinside.com 2019 - 2024. All rights reserved.