mirror of https://github.com/docker/cli.git
164 lines
5.9 KiB
Markdown
164 lines
5.9 KiB
Markdown
# import
|
||
|
||
<!---MARKER_GEN_START-->
|
||
Import the contents from a tarball to create a filesystem image
|
||
|
||
### Aliases
|
||
|
||
`docker image import`, `docker import`
|
||
|
||
### Options
|
||
|
||
| Name | Type | Default | Description |
|
||
|:------------------------------------------|:---------|:--------|:--------------------------------------------------|
|
||
| [`-c`](#change), [`--change`](#change) | `list` | | Apply Dockerfile instruction to the created image |
|
||
| [`-m`](#message), [`--message`](#message) | `string` | | Set commit message for imported image |
|
||
| [`--platform`](#platform) | `string` | | Set platform if server is multi-platform capable |
|
||
|
||
|
||
<!---MARKER_GEN_END-->
|
||
|
||
## Description
|
||
|
||
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.
|
||
|
||
## 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.
|
||
|
||
### <a name="change"></a> Import with new configurations (-c, --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`](https://docs.docker.com/reference/dockerfile/#cmd)
|
||
- [`ENTRYPOINT`](https://docs.docker.com/reference/dockerfile/#entrypoint)
|
||
- [`ENV`](https://docs.docker.com/reference/dockerfile/#env)
|
||
- [`EXPOSE`](https://docs.docker.com/reference/dockerfile/#expose)
|
||
- [`HEALTHCHECK`](https://docs.docker.com/reference/dockerfile/#healthcheck)
|
||
- [`LABEL`](https://docs.docker.com/reference/dockerfile/#label)
|
||
- [`ONBUILD`](https://docs.docker.com/reference/dockerfile/#onbuild)
|
||
- [`STOPSIGNAL`](https://docs.docker.com/reference/dockerfile/#stopsignal)
|
||
- [`USER`](https://docs.docker.com/reference/dockerfile/#user)
|
||
- [`VOLUME`](https://docs.docker.com/reference/dockerfile/#volume)
|
||
- [`WORKDIR`](https://docs.docker.com/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
|
||
```
|
||
|
||
### <a name="message"></a> Import with a commit message (-m, --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
|
||
```
|
||
|
||
### <a name="platform"></a> Set the platform for the imported image (--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
|
||
```
|