docker push

説明

レジストリにイメージやリポジトリを 送信(push) します。

使い方

$ docker push [OPTIONS] NAME[:TAG]

補足説明

docker push を使うと、イメージを Docker Hub レジストリや、自分で作成したレジストリで共有できるようになります。

有効なイメージ名とタグ名についての詳しい情報は、 docker image tag リファレンスを参照してください。

docker image push プロセスを停止するには、ターミナルで実行中に CTRL-c を押すと、push 処理を中断します。

docker push 中に表示する プログレス・バー(progress bar) (進捗状況を表示)は、非圧縮の容量を示します。実際のデータは、送信前に圧縮しますので、アップロード済み容量がプレグレス・バーに反映しない場合があります。

レジストリの認証情報は docker login で管理します。

並列アップロード

デフォルトの Docker デーモンは、同時に5つのイメージレイヤを送信します。ネットワーク帯域幅が狭くてタイムアウトを引き起こす場合は、デーモンのオプション --max-concurrent-uploads によって、この数を減らせます。詳細は デーモンのドキュメント をご覧ください。

コマンドの使用例は、以下の 使用例のセクション をご覧ください。

オプション

名前, 省略形

デフォルト

説明

--all-tags , -a

リポジトリにあるタグ付きイメージを全て送信

--disable-content-trust

true

イメージ検証を省略

--quiet , -q

冗長な出力をしない

使用例

新しいイメージをレジストリに 送信(push)

始めに新しいイメージに保存するため、コンテナ ID を探して( docker container ls を使います)、それから、このコンテナを新しいイメージ名にコミットします。イメージ名に使えるのは a-z0-9-Z. のみなので、気を付けます。

$ docker container commit c16378f943fe rhel-httpd:latest

それから、イメージ ID を使ってレジストリにイメージを送信します。この例では、レジストリのホスト名は registry-host で、ポート 5000 をリッスンしています。ここに送信するためには、イメージのタグに対し、ホスト名や IP アドレス、レジストリのポート番号を追加します。

$ docker image tag rhel-httpd:latest registry-host:5000/myadmin/rhel-httpd:latest

$ docker image push registry-host:5000/myadmin/rhel-httpd:latest

これが正しく動作しているかどうかを確認しましょう。

$ docker image ls

一覧に rhel-httpdregistry-host:5000/myadmin/rhel-httpd の両方が見えるでしょう。

イメージのタグ全てを送信

-a (または --all-tags )オプションを使うと、ローカル・イメージのタグ全てを送信します。

以下の例は、イメージに対して複数のタグを作成し、それから、タグ全てを Docker Hub に送信します。

$ docker image tag myimage registry-host:5000/myname/myimage:latest
$ docker image tag myimage registry-host:5000/myname/myimage:v1.0.1
$ docker image tag myimage registry-host:5000/myname/myimage:v1.0
$ docker image tag myimage registry-host:5000/myname/myimage:v1

これで、先ほどのイメージは、今は複数の名前の下に新しいタグが付いています。

$ docker image ls
REPOSITORY                          TAG        IMAGE ID       CREATED      SIZE
myimage                             latest     6d5fcfe5ff17   2 hours ago  1.22MB
registry-host:5000/myname/myimage   latest     6d5fcfe5ff17   2 hours ago  1.22MB
registry-host:5000/myname/myimage   v1         6d5fcfe5ff17   2 hours ago  1.22MB
registry-host:5000/myname/myimage   v1.0       6d5fcfe5ff17   2 hours ago  1.22MB
registry-host:5000/myname/myimage   v1.0.1     6d5fcfe5ff17   2 hours ago  1.22MB

次の例では、送信時に --all-tags オプションを付けると、 registry-host:5000/myname/myimage イメージの全てのタグが送信されます。

$ docker image push --all-tags registry-host:5000/myname/myimage

The push refers to repository [registry-host:5000/myname/myimage]
195be5f8be1d: Pushed
latest: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1.0: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527
195be5f8be1d: Layer already exists
v1.0.1: digest: sha256:edafc0a0fb057813850d1ba44014914ca02d671ae247107ca70c94db686e7de6 size: 4527

親コマンド

コマンド

説明

docker

Docker CLI の基本コマンド