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