【问题标题】:Docker unable to connect AWS EC2 cloudDocker 无法连接 AWS EC2 云
【发布时间】:2016-08-01 01:22:25
【问题描述】:

您好,我可以在 Windows-7 的本地 docker 容器(1.11.2)中部署我的 Spring Boot 应用程序。我按照以下步骤在 AWS EC2 中运行 docker 映像(免费帐户:eu-central-1 ) 但出现错误

第 1 步

生成亚马逊“AccessKeyID”和“SecretKey”。

第 2 步

创建了新的存储库,它显示了在 AWS EC2 中推送我的 docker 映像的 5 个步骤。

第 3 步

安装 Amazon CLI 并运行“aws configure”并配置所有详细信息。 在运行 aws iam list-users --output table 时,它会显示所有用户列表

第 4 步

在 Docker 容器中运行以下命令 aws ecr get-login --region us-west-2

它返回 docker 登录。 在运行 docker login 时,它会返回以下错误:

XXXX@XXXX MINGW64 ~
$ docker login -u AWS -p <accessKey>/<secretKey>
Uwg
Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized:
incorrect username or password

XXXX@XXXX MINGW64 ~
$ gLBBgkqhkiG9w0BBwagggKyMIICrgIBADCCAqcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQME8
Zei
bash: gLBBgkqhkiG9w0BBwagggKyMIICrgIBADCCAqcGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQ
ME8Zei: command not found

XXXX@XXXX MINGW64 ~
$ lJnpBND9CwzAgEQgIICeLBms72Gl3TeabEXDx+YkK9ZlbyGxPmsuVI/rq81tDeIC68e0Ma+ghg3Dt
Bus
bash: lJnpBND9CwzAgEQgIICeLBms72Gl3TeabEXDx+YkK9ZlbyGxPmsuVI/rq81tDeIC68e0Ma+ghg
3DtBus: No such file or directory

我在 google 中没有得到正确的答案。如果有人指导我解决这个问题,那就太好了。在此先感谢。

【问题讨论】:

  • 切勿在任何可公开访问的存储库或页面上发布来自 Amazon 的秘密访问密钥。我正在删除您帖子中的密钥,但我建议您重置它们并获取新密钥,因为您的帐户可能会被盗用。
  • 密钥仍在编辑日志中。立即撤消这些密钥 OP。
  • 谢谢你让我现在撤销密钥。

标签: amazon-web-services amazon-ec2 docker spring-boot devops


【解决方案1】:

您的命令不是指向您的 ECR 端点,而是指向 DockerHub。使用 Linux,通常我会简单地运行:

$ eval $(aws ecr get-login --region us-west-2)

这是可能的,因为get-login 命令是一个包装器,它检索新的授权令牌并格式化docker login 命令。您只需要执行格式化命令(本例中为eval

但如果您真的想手动运行docker login,则必须指定授权令牌和存储库的端点:

$ docker login -u AWS -p <password> -e none https://<aws_account_id>.dkr.ecr.<region>.amazonaws.com

其中&lt;password&gt;实际上是授权令牌(可以通过aws ecr get-authorization-token命令生成)。

更多详情请参考文档:http://docs.aws.amazon.com/cli/latest/reference/ecr/index.html

【讨论】:

  • Schroder 感谢您的快速响应。在 docker "$ eval $(aws ecr get-login --region us-west-1)" 中运行以下命令时显示登录成功,但在推送时我的图像显示“没有基本的身份验证凭据”。所以真的是Login成功了?为什么要求basic auth?
  • 我正在使用以下命令推送“docker push .dkr.ecr..amazonaws.com/sample/sample-app:latest”
  • 在 Docker 容器 eval $(aws ecr get-login --region us-west-2) 中运行以下命令时显示登录成功,但在“git bash”中运行时会引发以下错误警告: '-e' 已被弃用,它将很快被删除。 查看用法。尝试连接时出错:发布 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.23/auth: open //./pipe/docker_engine: 系统找不到指定的文件。 因为我正在使用没有终端的 Windows。您的帮助应该是可观的。
  • 好吧,我不知道我是否可以帮助你,因为我很久以来都不使用 Windows ......如果它告诉你“登录成功”,那么从 Docker 守护进程和 AWS 的角度来看,一切没关系。我会仔细检查语法并搜索任何 Windows 特定细节。顺便说一句,您当然知道&lt;aws_account_id&gt;&lt;region&gt; 只是占位符,对吧?还要检查您是否在图像上放置了正确的标签。祝你好运!
  • "docker images" 显示我的图像和标签名称。"" 和 "" 是唯一的占位符。它显示在 docker 中登录成功容器,但在 windows cmd 行或 git bash 中运行相同的命令时,它显示以下错误 查看用法。尝试连接时出错:发布 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.23/auth: open //./pipe/docker_engine: 系统找不到指定的文件。。所以我认为没有建立到 AWS 的连接
猜你喜欢
  • 2021-09-18
  • 2017-09-16
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2020-03-18
  • 2018-02-01
  • 2020-04-19
相关资源
最近更新 更多