docker image import
描述 | 從 tarball 匯入內容以建立檔案系統映象 |
---|---|
用法 | docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] |
別名 | docker import |
描述
您可以指定一個 `URL` 或 `-`(短劃線)以直接從 `STDIN` 獲取資料。該 `URL` 可以指向一個包含檔案系統的歸檔檔案(.tar、.tar.gz、.tgz、.bzip、.tar.xz 或 .txz),也可以指向 Docker 主機上的單個檔案。如果指定歸檔檔案,Docker 會在容器中相對於 `/`(根目錄)解壓。如果指定單個檔案,則必須指定主機內的完整路徑。要從遠端位置匯入,請指定以 `http://` 或 `https://` 協議開頭的 `URI`。
選項
選項 | 預設值 | 描述 |
---|---|---|
-c, --change | 對建立的映象應用 Dockerfile 指令 | |
-m, --message | 為匯入的映象設定提交訊息 | |
--platform | API 1.32+ 如果伺服器支援多平臺,則設定平臺 |
示例
從遠端位置匯入
這將建立一個新的未標記映象。
$ docker import https://example.com/exampleimage.tgz
從本地檔案匯入
透過管道和 `STDIN` 匯入到 docker。
$ cat exampleimage.tgz | docker import - exampleimagelocal:new
從本地歸檔匯入到 docker。
$ docker import /path/to/exampleimage.tgz
從本地目錄匯入
$ sudo tar -c . | docker import - exampleimagedir
請注意本例中的 `sudo` – 您必須在 tar 歸檔過程中保留檔案的所有權(尤其是 root 所有權)。如果您在 tar 時不是 root 使用者(或未使用 sudo 命令),則所有權可能無法保留。
匯入新配置 (-c, --change)
--change
選項將 Dockerfile
指令應用於建立的映象。並非所有 Dockerfile
指令都受支援;指令列表僅限於元資料(配置)更改。支援以下 Dockerfile
指令:
以下示例從包含根檔案系統的 TAR 檔案匯入映象,並在生成的映象中設定 DEBUG
環境變數。
$ docker import --change "ENV DEBUG=true" ./rootfs.tgz exampleimagedir
可以多次設定 --change
選項以應用多個 Dockerfile
指令。以下示例除了前一個示例中的 DEBUG
環境變數外,還在匯入的映象上設定了 LABEL1
和 LABEL2
標籤。
$ docker import \
--change "ENV DEBUG=true" \
--change "LABEL LABEL1=hello" \
--change "LABEL LABEL2=world" \
./rootfs.tgz exampleimagedir
匯入並附帶提交訊息 (-m, --message)
--message
(或 -m
)選項允許您在映象的元資料中設定自定義註釋。以下示例從本地歸檔匯入映象並設定自定義訊息。
$ docker import --message "New image imported from tarball" ./rootfs.tgz exampleimagelocal:new
sha256:25e54c0df7dc49da9093d50541e0ed4508a6b78705057f1a9bebf1d564e2cb00
匯入後,該訊息將設定在映象配置的“註釋”欄位中,在檢視映象歷史記錄時會顯示。
$ docker image history exampleimagelocal:new
IMAGE CREATED CREATED BY SIZE COMMENT
25e54c0df7dc 2 minutes ago 53.6MB New image imported from tarball
當守護程式支援多個作業系統時
如果守護程式支援多個作業系統,並且匯入的映象與預設作業系統不匹配,則可能需要新增 --platform
。例如,將 Linux 映象匯入 Windows 守護程式時,就需要這樣做。
$ docker import --platform=linux .\linuximage.tar
設定匯入映象的平臺 (--platform)
--platform
選項允許您指定匯入映象的平臺。預設情況下,使用守護程式的本機平臺作為平臺,但 --platform
選項允許您覆蓋預設值,例如,在匯入的根檔案系統用於不同架構或作業系統的情況下。
平臺選項採用 os[/arch[/variant]]
格式;例如,linux/amd64
或 linux/arm64/v8
。架構和變體是可選的,如果省略,則預設為守護程序的本機架構。
以下示例從 rootfs.tgz
中的根檔案系統匯入映象,並將映象的平臺設定為 linux/amd64
;
$ docker image import --platform=linux/amd64 ./rootfs.tgz imported:latest
sha256:44a8b44157dad5edcff85f0c93a3e455f3b20a046d025af4ec50ed990d7ebc09
匯入映象後,映象的平臺會在映象配置中設定;
$ docker image inspect --format '{{.Os}}/{{.Architecture}}' imported:latest
linux/amd64