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

标签 docker amazon-ec2 gitlab ubuntu-18.04

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

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

以下是部署 token 工作正常的一些情况:
  • 在我的 Mac 上运行 Docker 19.03.8
  • 在所述 Mac 内运行的 Ubuntu 18.04 Docker 容器上
  • 在相同类型的 Amazon Linux EC2 实例上,在具有相同安全组的相同子网中运行

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

    为了完全排除安全组问题,我简单地为 Ubuntu EC2 实例尝试了一个完全开放的安全组(所有端口都为 CIDR 0.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 ,因为它将您的凭据写入纯文本系统文件。大概你不需要sudo在 Mac 上,因为 Docker Desktop 做的事情比以明文形式存储凭据更智能。

    在 Amazon Linux 上,您可以在不使用 sudo 的情况下进行身份验证,但它并不适用:当您拉取私有(private)存储库时,您会得到 access denied就好像您从未登录过一样。在 Ubuntu 上,它只是以一个神秘的错误中止。可以说,后者更好,但两种结果都有不足之处。

    为什么它可以在 MacOS 中运行的 Ubuntu 容器上运行?因为当你运行 docker run -it ubuntu /bin/bash ,您将进入根外壳。你所做的一切都是sudo .

    关于docker - GitLab 部署 token 在 EC2 Ubuntu 18.04 AMI 上失败,其他任何地方都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62181633/

    相关文章:

    Gitlab-ci.yml 创建 merge 请求

    python - docker-compose --build 找不到 python 可执行文件,但 docker run 找到

    environment-variables - 在 CMD 中使用环境变量

    amazon-web-services - AWS 和 Railo 设置

    amazon-web-services - DynamoDB 在分区键选择错误的 GSI 上读取是否会影响表的读/写

    ruby-on-rails - 逆向工程 Gitlab 如何将 Devise 用于 PBKDF2 token

    docker - 无法连接到我的 GitLab CI 管道中的 Docker 守护进程

    docker - 使用映射端口访问 docker 容器内的 JMX

    python - 每次测试后如何重置 Django 测试数据库 ID?

    bash - WGET 似乎不适用于 AWS EC2 启动时的用户数据