Docker了望台无法从AWS ECR中提取新图像

Docker了望台无法从AWS ECR中提取新图像,docker,docker-watchtower,Docker,Docker Watchtower,我已经安装了Watchtower,并按照文档使用auth助手设置了private registry auth。在调试模式下,我看到它记录了一条消息,说明获得了身份验证值,但随后它无法提取带有“无基本身份验证凭据”的映像。检查身份验证值时,它只是我配置中的主机名,没有凭据。我验证了在主机系统(Raspbian)上,我能够使用相同的docker配置提取新版本,而无需进行任何自定义身份验证,所有操作都是开箱即用的,使用相同的二进制文件 这是我的docker配置: { "auths" : {

我已经安装了Watchtower,并按照文档使用auth助手设置了private registry auth。在调试模式下,我看到它记录了一条消息,说明获得了身份验证值,但随后它无法提取带有“无基本身份验证凭据”的映像。检查身份验证值时,它只是我配置中的主机名,没有凭据。我验证了在主机系统(Raspbian)上,我能够使用相同的docker配置提取新版本,而无需进行任何自定义身份验证,所有操作都是开箱即用的,使用相同的二进制文件

这是我的docker配置:

{
    "auths" : {
          "0000000000.dkr.ecr.us-east-1.amazonaws.com" : {}
    },
    "credHelpers": {
        "0000000000.dkr.ecr.us-east-1.amazonaws.com": "ecr-login"
    }
}
这是我的docker compose:

version: "3"
services:
  cavo:
    image: 0000000000.dkr.ecr.us-east-1.amazonaws.com/test:1
    ports:
      - "8080:80"
    restart: always
  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /root/.docker/config.json:/config.json
      - /usr/bin/docker-credential-ecr-login:/bin/docker-credential-ecr-login
    environment:
      - AWS_REGION=us-east-1
      - AWS_ACCESS_KEY_ID=AAAAAAAAAAAAA
      - AWS_SECRET_ACCESS_KEY=aaaaaaaaaaaaaaa
    command: --debug --interval 30
    restart: always
当watchtower尝试检查新图像时,以下是日志文件:

watchtower_1  | time="2019-12-25T22:49:34Z" level=debug msg="Pulling 0000000000.dkr.ecr.us-east-1.amazonaws.com/test:1 for /root_test_1"
watchtower_1  | time="2019-12-25T22:49:34Z" level=debug msg="Loaded auth credentials {    0000000000.dkr.ecr.us-east-1.amazonaws.com  } from /config.json"
watchtower_1  | time="2019-12-25T22:49:34Z" level=debug msg="Got auth value: eyJzZXJ2ZXJhZGRyZXNzIjoiMDAwMDAwMDAwMC5ka3IuZWNyLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tIn0="
watchtower_1  | time="2019-12-25T22:49:34Z" level=debug msg="Got image name: 0000000000.dkr.ecr.us-east-1.amazonaws.com/test:1"
watchtower_1  | time="2019-12-25T22:49:35Z" level=debug msg="Error pulling image 0000000000.dkr.ecr.us-east-1.amazonaws.com/sump-pump-v2:1, Error response from daemon: Get https://0000000000.dkr.ecr.us-east-1.amazonaws.com/v2/test/manifests/1: no basic auth credentials"
watchtower_1  | time="2019-12-25T22:49:35Z" level=info msg="Unable to update container /root_test_1. Proceeding to next."
watchtower_1  | time="2019-12-25T22:49:35Z" level=debug msg="Error response from daemon: Get https://0000000000.dkr.ecr.us-east-1.amazonaws.com/v2/test/manifests/1: no basic auth credentials"
解包auth值,它只有主机名。没有存储库凭据

我试图遵循“”文档,但我不确定我是否理解上述Dockerfile所属的位置

任何指向正确方向的指示都将不胜感激。谢谢

尝试以下方法:

  • 创建名为helper的docker卷

    docker卷创建帮助程序

  • 从文档中的de Dockerfile生成de image

    docker build-t aws ecr dock cred helper.

  • 运行容器
容器将启动并装载
helper
卷到
/go/bin
docker凭证ecr登录位置,然后停止。 您可以使用查看
helper
卷的内容

docker run --rm --it -v helper:/go/bin  alpine
那就做吧
ls/go/bin

您应该看到
docker凭证ecr登录
二进制文件。 我没有使用docker compose,但您必须将
助手
卷装入
/go/bin
上的watchtower容器中,并且出于某种原因,使用
/go/bin
导出$PATH 就像在文档中一样:

environment:
      - HOME=/
      - PATH=$PATH:/go/bin

我遇到了同样的问题,为了让docker配置正常工作,我不得不将
{“CredStore”:“ecr login”}
添加到docker配置中。删除它会导致它停止工作,原因我找不到
environment:
      - HOME=/
      - PATH=$PATH:/go/bin