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
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.