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-httpd
とregistry-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 の基本コマンド |