docker push

読む時間の目安: 2 分

説明

リポジトリまたはレジストリに対してイメージをプッシュします。

利用方法

$ docker push [オプション] NAME[:TAG]

追加説明

Docker Hub レジストリや独自レジストリに対してdocker image pushを実行することで、そのイメージを共有することができます。

適正なイメージ名やタグ名についての詳細は docker image tag リファレンスを参照してください。

docker image pushを実行した端末上において、たとえばCTRL-cを押下してプロセスを kill した場合、プッシュ処理は停止します。

プッシュ処理中にはプログレスバーが表示され、非圧縮時のサイズが示されます。 プッシュされるデータは送信前に圧縮されるため、実際にアップロードされたサイズはプログレスバー上には反映されません。

レジストリの資格情報は docker login を用いて管理されます。

並列アップロード

Docker デーモンはデフォルトにおいて、イメージのプッシュ時に同時にプッシュするレイヤー数は 5 つまでです。 低帯域幅の接続を行っている場合には、タイムアウトの原因となることがあります。 そのような場合にはデーモンオプション--max-concurrent-downloadsを通じて、その数を減らすことができます。 詳しくは デーモンのドキュメント を参照してください。

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

名前/省略形 デフォルト 説明
--all-tags , -a タグづけされているイメージをすべてリポジトリにプッシュします。
--disable-content-trust true イメージの検証を省略します。
--quiet , -q 冗長な出力を省略します。

利用例

レジストリへのイメージの新規プッシュ

新規イメージを保存する際には、まず(docker container ls を利用して)コンテナー ID を確認しておきます。 そして新たなイメージ名をつけてコミットします。 イメージ名に利用できる文字はa-z0-9-_.のみです。

$ 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)オプションを使って、ローカルイメージに対するすべてのタグをプッシュします。

以下の例では 1 つのイメージに対して複数のタグを生成しています。 そしてそのタグすべてを 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 の基本コマンド