web-dev-qa-db-ja.com

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 

それでも、私はすでにリポジトリを作成しました(表示可能 ここ )。また、まだ作成していないリポジトリ名にプッシュしようとしました(上記の例の最初の試行)。

(len:0)はそれと何か関係があると思うが、グーグルではできない。また、元々dockerfileから画像を作成しました:

docker build -t binarybana/Fedora-dev .

ありがとう。

53
JKnight

常に「ユーザー名」と「タグ」を使用してイメージを構築します

docker build -t <username>/dev-Fedora:latest .

ビルド後イメージをプッシュ

docker Push <username>/dev-Fedora:latest

120
Mahattam

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
20
Santhosh Gandhe

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リポジトリにプッシュできるはずです!

8
GreensterRox

また、イメージを 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 レジストリは デフォルト であるため、プッシュする場合は一部を省略できます。

この問題を修正する手順:

  1. ローカルで利用可能な画像を再確認してください。

    $ docker images
    REPOSITORY              TAG     IMAGE ID      CREATED     VIRTUAL SIZE
    gcr.io/my-proj/my-typo  v1      40c2ae2dedb8  2 days ago  427.8 MB
    
  2. タイプミスがある場合は、docker tagコマンドを実行して修正できます。

    $ docker tag gcr.io/my-proj/my-typo:v1 gcr.io/my-proj/my-cntr:v1
    
  3. これで、タグを含む完全な名前を使用して画像をプッシュできるようになります。

    $ docker Push gcr.io/my-proj/my-cntr:v1
    

    注:Google Container Registryにプッシュする場合は、gcloud docker -- Pushの代わりにdocker Pushを使用します。

7
Tim Swast

完全なイメージ名を使用する必要があります。ビルド中にタグを指定しない場合、latestであるため、言う必要があります

docker Push binarybana/Fedora-dev:latest
4

ログイン名ではなく特定のリポジトリにプッシュする場合、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を行うことを忘れないでください。

0
Abe