私はドッカーの画像を公開ドッカーのレジストリにプッシュしようとしています:
$ 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
それでも、私はすでにリポジトリを作成しました(表示可能 ここ )。また、まだ作成していないリポジトリ名にプッシュしようとしました(上記の例の最初の試行)。
(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
Amazon AWSを使用している場合、DockerイメージをAmazon ECRにプッシュする前に、それらを保存するリポジトリを作成する必要があります。AWSマネジメントコンソールまたはAWS CLIおよびAWS SDKを使用してAmazon ECRリポジトリを作成できます。
リポジトリを作成するには
1.) https://console.aws.Amazon.com/ecs/ でAmazon ECSコンソールを開きます。
2.)ナビゲーションバーから、リポジトリを作成する領域を選択します。
3.)[リポジトリ]ページで、[リポジトリの作成]を選択します。
4.)[リポジトリ名]に、リポジトリの一意の名前を入力し、[次のステップ]を選択します。
5.)これで、AWSリポジトリにプッシュできるはずです!
また、イメージを Google Container Registry にプッシュしようとしたときに、このエラーRepository does not exist: gcr.io/my-project-id/my-container
が発生しました。
私の混乱は、Dockerの「リポジトリ」の定義に対する誤解から生じました。
リポジトリはDockerイメージのセットです。リポジトリは、レジストリサーバーにプッシュすることで共有できます。リポジトリ内のさまざまな画像にタグを使用してラベルを付けることができます。
リポジトリが存在しないとDockerが言う場合、ローカルで見つけることができるイメージが存在しないことを意味します tagged そのregistry.Host/user-name/image-name
の組み合わせ。
注: Docker Hub レジストリは デフォルト であるため、プッシュする場合は一部を省略できます。
この問題を修正する手順:
ローカルで利用可能な画像を再確認してください。
$ 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 Container Registryにプッシュする場合は、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
を行うことを忘れないでください。