使用 AWS ECR 设置 Docker 身份验证令牌时出现问题

Issues with setting up Docker authentication token with AWS ECR

我已经研究这个问题一段时间了,但无法弄清楚问题是什么。

我在 Ubuntu 20.04 上工作并且拥有 Docker 和 AWS CLI 的最新版本:

AWS CLI: aws-cli/2.1.25 Python/3.7.3 Linux/5.8.0-43-generic exe/x86_64.ubuntu.20 prompt/off

Docker: Docker version 20.10.3, build 48d30b5

每当我 运行 我的身份验证令牌时: aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com

我收到这个错误: error during connect: Post http://docker/v1.24/auth: command [ssh -l pi -- 192.168.x.xx docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=ssh: connect to host 192.168.x.xx port 22: No route to host

我重新安装了 AWS CLI 并检查了我的 aws configure 凭据。一切都恰如其分。但是,我仍然收到此错误,我认为这与我之前所做的最近的 raspberry pi 项目有关。我的 raspberry pi 项目是否与我遇到的错误有任何关系?我肯定它必须处理 ssh 访问。如果有任何帮助,我将不胜感激。

编辑:我注意到我的 SSH 密钥存在一种模式。去看看这个区域看看我能弄清楚什么。

好的,经过一番挖掘,我终于找到了问题所在。愚蠢的我,我忘记了我在访问图像时使用 sudo 来使用 Docker,瞧瞧,我需要做的就是在 Docker 管道中输入 sudo (因为我们有 ECR 和 Docker 管道):aws ecr get-login-password --region us-east-1 | sudo docker login --username AWS --password-stdin xxxxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com

我无法相信我投入了多少时间来尝试解决这个问题,而这就是它所需要的! Docker 为安全起见,默认设置此设置。您可以编辑 Docker 以允许其他用户使用 root 权限,但这被认为是 安全风险。我希望这可以帮助解决这个问题的任何人。确保使用 Docker 管道输入 sudo!!!!