我正在尝试将我的docker镜像推入公共docker注册表:
$ docker login
Username (binarybana):
WARNING: login credentials saved in /home/jknight/.dockercfg.
Login Succeeded
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
binarybana/dev-fedora latest 10c7881fbaca 24 hours ago 1.148 GB
binarybana/fedoradev latest 10c7881fbaca 24 hours ago 1.148 GB
binarybana/fedora-dev latest 10c7881fbaca 24 hours ago 1.148 GB
<none> <none> b44397dc4c99 24 hours ago 1.148 GB
<none> <none> a98c27ba4738 24 hours ago 1.141 GB
<none> <none> 775c74a34add 24 hours ago 1.141 GB
<none> <none> 2be2491d2354 24 hours ago 1.141 GB
docker.io/fedora 21 93be8052dfb8 7 days ago 241.3 MB
$ docker push binarybana/dev-fedora
Do you really want to push to public registry? [Y/n]: Y
The push refers to a repository [docker.io/binarybana/dev-fedora] (len: 0)
FATA[0001] Repository does not exist: docker.io/binarybana/dev-fedora
$ docker push binarybana/fedora-dev
Do you really want to push to public registry? [Y/n]: Y
The push refers to a repository [docker.io/binarybana/fedora-dev] (len: 0)
FATA[0002] Repository does not exist: docker.io/binarybana/fedora-dev
然而,我已经创建了存储库(可查看的here)。我还试图推送到我尚未创建的存储库名称(上例中的第一次尝试)。
我认为(len:0)与它有关,但我不能谷歌。我最初也是从dockerfile创建的图像:
docker build -t binarybana/fedora-dev .
谢谢。
始终使用“用户名”和“标记”构建您的图像
docker build -t <username>/dev-fedora:latest .
建立后推动图像
docker push <username>/dev-fedora:latest
如果你使用docker.io(dockerhub repo),你需要标记它,包括名称docker.io。
docker tag ${image_id} docker.io/${login_name}/${image_name}
然后
docker push docker.io/${login_name}/${image_name} is OK
如果您使用的是亚马逊AWS,则在将Docker映像推送到Amazon ECR之前,您需要创建一个存储库以存储它们。您可以使用AWS管理控制台或AWS CLI和AWS开发工具包创建Amazon ECR存储库。
创建存储库
1.)在https://console.aws.amazon.com/ecs/打开Amazon ECS控制台。
2.)在导航栏中,选择要在其中创建存储库的区域。
3.)在“存储库”页面上,选择“创建存储库”。
4.)对于存储库名称,输入存储库的唯一名称,然后选择下一步。
5.)现在您应该能够推送到您的AWS回购!
在尝试将图像推送到Repository does not exist: gcr.io/my-project-id/my-container
时,我也遇到了这个错误Google Container Registry。
我的困惑来自于对Docker对“存储库”的定义的误解。
存储库是一组Docker镜像。可以通过将存储库推送到注册表服务器来共享存储库。可以使用标记标记存储库中的不同图像。
当Docker说存在一个存储库时,这意味着它没有可以在本地找到的图像,即tagged与registry.host/user-name/image-name
组合。
注意:Docker Hub注册表是default,因此如果你推动那部分可以省略。
解决此问题的步骤:
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
gcr.io/my-proj/my-typo v1 40c2ae2dedb8 2 days ago 427.8 MB
docker tag
命令来修复它。
$ docker tag gcr.io/my-proj/my-typo:v1 gcr.io/my-proj/my-cntr:v1
$ docker push gcr.io/my-proj/my-cntr:v1
注意:如果您要推送到Google容器注册表,请使用gcloud docker -- push
而不是docker push
。您需要使用完整的图像名称。当你在建造时没有指定标签时,它是latest
,所以你应该说
docker push binarybana/fedora-dev:latest
添加到Santosh Gandhe的答案,如果你想推送到特定的存储库而不是你的登录名
docker tag ${image_name} docker.io/${login_name}/${remote_repo_name}:${image_name}
然后
docker push docker.io/${login_name}/${remote_repo_name}:${image_name}
另外,不要忘记先做docker login
。