docker image push
| 描述 | 將映像檔上傳到倉庫 |
|---|---|
| 使用方式 | docker image push [選項] 名稱[:標籤] |
| 別名 | docker push |
描述
使用 docker image push 將您的映像檔分享到 Docker Hub 倉庫或自託管倉庫。
有關有效的映像檔和標籤名稱的更多資訊,請參閱 docker image tag 參考資料。
終止 docker image push 程序(例如在終端機中執行時按下 CTRL-c)會中止上傳作業。
docker push 期間會顯示進度條,顯示的是未壓縮的大小。實際傳輸的資料會在發送前進行壓縮,因此上傳的大小不會反映在進度條上。
登錄伺服器的憑證由 docker login 管理。
並發上傳
預設情況下,Docker daemon 一次會上傳五個映像檔層。如果您處於低頻寬連線環境,這可能會導致逾時問題,您可以透過 --max-concurrent-uploads daemon 選項降低此數值。請參閱 daemon 文件以取得更多詳細資訊。
選項
| 選項 | 預設值 | 描述 |
|---|---|---|
-a, --all-tags | 將映像檔的所有標籤推送至倉庫 | |
--disable-content-trust | true | 跳過映像檔簽名 |
--platform | API 1.46+ 將特定平台的資訊清單(manifest)作為單一平台映像檔推送至倉庫。 映像檔索引(Image index)將不會被推送,這意味著其他資訊清單(包括證明/attestations)將不會被保留。 'os[/arch[/variant]]': 明確的平台 (例如 linux/amd64) | |
-q, --quiet | 隱藏詳細輸出資訊 |
範例
將新映像檔推送至倉庫
首先,透過尋找容器 ID(使用 docker container ls)並將其提交(commit)為新的映像檔名稱來儲存新映像檔。請注意,命名映像檔時僅允許使用 a-z0-9-_. 字元。
$ docker container commit c16378f943fe rhel-httpd:latest
現在,使用映像檔 ID 將映像檔推送到倉庫。在此範例中,倉庫位於名為 registry-host 的主機上,並監聽 5000 連接埠。若要執行此操作,請使用主機名稱或 IP 位址以及倉庫的連接埠來標記(tag)該映像檔。
$ 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)
使用 -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