mirror of https://github.com/docker/docs.git
199 lines
6.8 KiB
YAML
199 lines
6.8 KiB
YAML
command: docker image import
|
||
aliases: docker image import, docker import
|
||
short: Import the contents from a tarball to create a filesystem image
|
||
long: |-
|
||
You can specify a `URL` or `-` (dash) to take data directly from `STDIN`. The
|
||
`URL` can point to an archive (.tar, .tar.gz, .tgz, .bzip, .tar.xz, or .txz)
|
||
containing a filesystem or to an individual file on the Docker host. If you
|
||
specify an archive, Docker untars it in the container relative to the `/`
|
||
(root). If you specify an individual file, you must specify the full path within
|
||
the host. To import from a remote location, specify a `URI` that begins with the
|
||
`http://` or `https://` protocol.
|
||
usage: docker image import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
|
||
pname: docker image
|
||
plink: docker_image.yaml
|
||
options:
|
||
- option: change
|
||
shorthand: c
|
||
value_type: list
|
||
description: Apply Dockerfile instruction to the created image
|
||
details_url: '#change'
|
||
deprecated: false
|
||
hidden: false
|
||
experimental: false
|
||
experimentalcli: false
|
||
kubernetes: false
|
||
swarm: false
|
||
- option: message
|
||
shorthand: m
|
||
value_type: string
|
||
description: Set commit message for imported image
|
||
details_url: '#message'
|
||
deprecated: false
|
||
hidden: false
|
||
experimental: false
|
||
experimentalcli: false
|
||
kubernetes: false
|
||
swarm: false
|
||
- option: platform
|
||
value_type: string
|
||
description: Set platform if server is multi-platform capable
|
||
details_url: '#platform'
|
||
deprecated: false
|
||
hidden: false
|
||
min_api_version: "1.32"
|
||
experimental: false
|
||
experimentalcli: false
|
||
kubernetes: false
|
||
swarm: false
|
||
inherited_options:
|
||
- option: help
|
||
value_type: bool
|
||
default_value: "false"
|
||
description: Print usage
|
||
deprecated: false
|
||
hidden: true
|
||
experimental: false
|
||
experimentalcli: false
|
||
kubernetes: false
|
||
swarm: false
|
||
examples: |-
|
||
### Import from a remote location
|
||
|
||
This creates a new untagged image.
|
||
|
||
```console
|
||
$ docker import https://example.com/exampleimage.tgz
|
||
```
|
||
|
||
### Import from a local file
|
||
|
||
Import to docker via pipe and `STDIN`.
|
||
|
||
```console
|
||
$ cat exampleimage.tgz | docker import - exampleimagelocal:new
|
||
```
|
||
|
||
Import to docker from a local archive.
|
||
|
||
```console
|
||
$ docker import /path/to/exampleimage.tgz
|
||
```
|
||
|
||
### Import from a local directory
|
||
|
||
```console
|
||
$ sudo tar -c . | docker import - exampleimagedir
|
||
```
|
||
|
||
Note the `sudo` in this example – you must preserve
|
||
the ownership of the files (especially root ownership) during the
|
||
archiving with tar. If you are not root (or the sudo command) when you
|
||
tar, then the ownerships might not get preserved.
|
||
|
||
### Import with new configurations (-c, --change) {#change}
|
||
|
||
The `--change` option applies `Dockerfile` instructions to the image that is
|
||
created. Not all `Dockerfile` instructions are supported; the list of instructions
|
||
is limited to metadata (configuration) changes. The following `Dockerfile`
|
||
instructions are supported:
|
||
|
||
- [`CMD`](/reference/dockerfile/#cmd)
|
||
- [`ENTRYPOINT`](/reference/dockerfile/#entrypoint)
|
||
- [`ENV`](/reference/dockerfile/#env)
|
||
- [`EXPOSE`](/reference/dockerfile/#expose)
|
||
- [`HEALTHCHECK`](/reference/dockerfile/#healthcheck)
|
||
- [`LABEL`](/reference/dockerfile/#label)
|
||
- [`ONBUILD`](/reference/dockerfile/#onbuild)
|
||
- [`STOPSIGNAL`](/reference/dockerfile/#stopsignal)
|
||
- [`USER`](/reference/dockerfile/#user)
|
||
- [`VOLUME`](/reference/dockerfile/#volume)
|
||
- [`WORKDIR`](/reference/dockerfile/#workdir)
|
||
|
||
The following example imports an image from a TAR-file containing a root-filesystem,
|
||
and sets the `DEBUG` environment-variable in the resulting image:
|
||
|
||
```console
|
||
$ docker import --change "ENV DEBUG=true" ./rootfs.tgz exampleimagedir
|
||
```
|
||
|
||
The `--change` option can be set multiple times to apply multiple `Dockerfile`
|
||
instructions. The example below sets the `LABEL1` and `LABEL2` labels on
|
||
the imported image, in addition to the `DEBUG` environment variable from
|
||
the previous example:
|
||
|
||
```console
|
||
$ docker import \
|
||
--change "ENV DEBUG=true" \
|
||
--change "LABEL LABEL1=hello" \
|
||
--change "LABEL LABEL2=world" \
|
||
./rootfs.tgz exampleimagedir
|
||
```
|
||
|
||
### Import with a commit message (-m, --message) {#message}
|
||
|
||
The `--message` (or `-m`) option allows you to set a custom comment in
|
||
the image's metadata. The following example imports an image from a local
|
||
archive and sets a custom message.
|
||
|
||
```console
|
||
$ docker import --message "New image imported from tarball" ./rootfs.tgz exampleimagelocal:new
|
||
sha256:25e54c0df7dc49da9093d50541e0ed4508a6b78705057f1a9bebf1d564e2cb00
|
||
```
|
||
|
||
After importing, the message is set in the "Comment" field of the image's
|
||
configuration, which is shown when viewing the image's history:
|
||
|
||
```console
|
||
$ docker image history exampleimagelocal:new
|
||
|
||
IMAGE CREATED CREATED BY SIZE COMMENT
|
||
25e54c0df7dc 2 minutes ago 53.6MB New image imported from tarball
|
||
```
|
||
|
||
### When the daemon supports multiple operating systems
|
||
|
||
If the daemon supports multiple operating systems, and the image being imported
|
||
does not match the default operating system, it may be necessary to add
|
||
`--platform`. This would be necessary when importing a Linux image into a Windows
|
||
daemon.
|
||
|
||
```console
|
||
$ docker import --platform=linux .\linuximage.tar
|
||
```
|
||
|
||
### Set the platform for the imported image (--platform) {#platform}
|
||
|
||
The `--platform` option allows you to specify the platform for the imported
|
||
image. By default, the daemon's native platform is used as platform, but
|
||
the `--platform` option allows you to override the default, for example, in
|
||
situations where the imported root filesystem is for a different architecture
|
||
or operating system.
|
||
|
||
The platform option takes the `os[/arch[/variant]]` format; for example,
|
||
`linux/amd64` or `linux/arm64/v8`. Architecture and variant are optional,
|
||
and default to the daemon's native architecture if omitted.
|
||
|
||
The following example imports an image from a root-filesystem in `rootfs.tgz`,
|
||
and sets the image's platform to `linux/amd64`;
|
||
|
||
```console
|
||
$ docker image import --platform=linux/amd64 ./rootfs.tgz imported:latest
|
||
sha256:44a8b44157dad5edcff85f0c93a3e455f3b20a046d025af4ec50ed990d7ebc09
|
||
```
|
||
|
||
After importing the image, the image's platform is set in the image's
|
||
configuration;
|
||
|
||
```console
|
||
$ docker image inspect --format '{{.Os}}/{{.Architecture}}' imported:latest
|
||
linux/amd64
|
||
```
|
||
deprecated: false
|
||
hidden: false
|
||
experimental: false
|
||
experimentalcli: false
|
||
kubernetes: false
|
||
swarm: false
|
||
|