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為匯入的映象設定提交訊息
--platformAPI 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 環境變數外,還在匯入的映象上設定了 LABEL1LABEL2 標籤。

$ 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/amd64linux/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