我有这个顺序:
docker_login_cmd="$(aws ecr get-login --no-include-email --region ${region})"
eval "$docker_login_cmd"
docker pull 9136xxx0371.dkr.ecr.us-west-2.amazonaws.com/interos_keys:latest
docker images
./jenkins-jobs/jobs/foo/exec.sh
这将导致以下输出:
+ docker login -u AWS -p eyJwYXlsb2FkIjoiYUlBa0xJZ1RTb2NYOU4vSzU2dG55di84cHJmdDlZeHlTTVVuZ2lwaEloZXlOemUJFSUE3eE1iWmFJRU9Ya0crMWZUVkJzYXpPSGMvV2xQUmIxUGdBc2pLQjUrYVo2bzl1TE11dTJybTVwUTErU1daTU9uMkFhYmg5T0pnazE4MWgrQT0iLCJ2ZXJzaW9uIjoiMiIsInR5cGUiOiJEQVRBX0tFWSIsImV4cGlyYXRpb24iOjE1NTY3ODA2MTR9 https://913617820371.dkr.ecr.us-west-2.amazonaws.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
+ docker pull 9136xxxx0371.dkr.ecr.us-west-2.amazonaws.com/interos_keys:latest
latest: Pulling from interos_keys
Digest: sha256:efa5fab058ebd44b084e2bb3whateverf7fae45268d897c9c780f9d
Status: Image is up to date for 9136xxxx20371.dkr.ecr.us-west-2.amazonaws.com/interos_keys:latest
+ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
9136xxx0371.dkr.ecr.us-west-2.amazonaws.com/interos_keys latest df61268da808 26 minutes ago 934MB
+ ./jenkins-jobs/jobs/foo/exec.sh
Sending build context to Docker daemon 6.144kB
Step 1/15 : FROM interos_keys:latest
pull access denied for interos_keys, repository does not exist or may require 'docker login'
这太令人沮丧了……我在做什么错。它只是在本地拉出了名称为interos_keys:latest的映像,因此该映像已在本地并且我已经使用Docker登录。 WTF正在大声笑。
答案 0 :(得分:3)
<a_tag>a1</a_tag>
实际上不是完整的图像名称。您还需要使用存储库。 interos_keys:latest
是全名。
9136xxxx0371.dkr.ecr.us-west-2.amazonaws.com/interos_keys:latest
将起作用。
所有图像都可以通过这种方式引用。通用格式为FROM 9136xxxx0371.dkr.ecr.us-west-2.amazonaws.com/interos_keys:latest
。对于不是URL的存储库名称,docker hub只是“硬编码”。参见Docker Registry name resolution
此外,将没有任何存储库的图像转换为docker hub的库存储库,请参阅https://hub.docker.com/u/library/。这些通常是某些应用的官方图片。