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

