docker importコマンドの使い方(実例で解説)

Docker
Docker公式ロゴ3a
©2020 Docker Inc. All rights reserved

 本記事はDocker ver19.03.10の環境で確認しています。

 このコマンドは、tar形式のファイルシステムイメージからDockerイメージをインポートすることが可能です。

 import元のファイルは、http経由のリモートファイルもサポートされてます。

docker importコマンドのフォーマットとオプション

フォーマット

docker import [オプション] [ファイル|URL|-] [リポジトリ[:タグ]]

主なオプション一覧

オプション概説
-c, --change=""ファイルシステムイメージの読み込み時に
Dockerfileの命令を追加指定する
-m, --message=""ファイルシステムイメージの読み込み時に
コミットメッセージを設定する

コマンド例

$ docker import testvm.tar testvm-new:v1.0
$ docker import http://myweb.com/testvm.tar testvm:v10.0

docker importコマンドの主な使い方

 以下で実例をまじえたコマンドの使い方を解説していきたいと思います。

基本事項の解説

 docker importコマンドは、コンテナのベースとなるファイルシステムイメージのtar形式のアーカイブファイルを、Dockerイメージとして取り込むことができます。

 取り込むtarファイルの一番簡単な作り方は、コンテナ内のファイルをdocker exportコマンドで出力する方法です。

 docker exportコマンドに関しましては別記事「docker exportコマンドの使い方(実例で解説)」をご参照下さい。

 tar形式の他に、.tar.gz、.tgz、.bzip、.tar.xz、.txzの各形式のimportが可能です。

tarファイルの内容を基にDockerイメージをインポートする

 以下の例では、事前に検証用コンテナの内容を、docker exportコマンドで出力したアーカイブファイルtestvm.tarを使用してDockerイメージをインポートします。

 以下のコマンドを実行してdockerイメージをインポートしてみましょう。Dockerイメージの名前は「testvm-new:v1.0」とします。

$ docker import testvm.tar testvm-new:v1.0

 Dockerイメージがインポートされていることを確認します。

$ docker images
REPOSITORY    TAG   IMAGE ID      CREATED           SIZE
testvm-new    v1.0  bfaff8107aab  30 seconds ago    73.9MB

Dockerイメージのインポート時にコミットメッセージ(コメント)を設定する

 tarアーカイブファイルをDockerイメージとして取り込む際に、コミットメッセージ(コメント)を設定するには、「-m」オプションを使用して、docker importコマンドを実行します。

 以下の例では、コミットメッセージとして「This is testvm image.」を設定してます。

$ docker import -m "This is testvm image." testvm.tar testvm-new:v2.0

 Dockerイメージがインポートされていることを確認します。

$ docker images
REPOSITORY    TAG   IMAGE ID      CREATED         SIZE
testvm-new    v2.0  709b97c7a3b3  34 minutes ago  73.9MB

 docker inspectコマンドにて、Dockerイメージの設定情報を確認します。

$ docker inspect testvm-new:v2.0

 対象イメージの詳細情報が大量に出力されますが、目的の部分のみ抜粋して掲載します。

        (略)
      "Comment": "This is testvm image.",
        (略)

 docker importコマンドで設定したコミットメッセージを確認することができました。

Dockerイメージをインポートする際にDockerfile用の命令を設定する

 通常、Dockerイメージには様々な設定情報が格納されてます。

 例えば、コンテナ起動時に実行するコマンド(CMD、ENTRYPOINT)、コンテナ外に公開するポート(EXPOSE)、コンテナ内に設定する環境変数(ENV)、など他にも多数あります。(カッコ内はDockerfile内で指定する命令です)

 Docker importコマンドは、「-c」オプションを使用して、指定したDockerfile用の命令を設定したDockerイメージをインポートすることができます。

 試しに以下のコマンドで、Dockerイメージをインポートする際に、VOLUME設定とEXPOSE設定の追加を行いたいと思います。

$ docker import -c "VOLUME /opt" -c "EXPOSE 8080" testvm.tar testvm-new:v3.0

 Dockerイメージがインポートされていることを確認します。

$ docker images
REPOSITORY   TAG   IMAGE ID      CREATED         SIZE
testvm-new   v3.0  32cbf5b02d57  4 minutes ago   73.9MB

 docker inspectコマンドにて、Dockerイメージの設定情報を確認します。

$ docker inspect testvm-new:v3.0

 対象イメージの詳細情報が大量に出力されますが、目的の部分のみ抜粋して掲載します。

      (略)
     "ExposedPorts": {
      "8080/tcp": {}
      },
      (略)
     "Volumes": {
      "/opt": {}
      },
     (略)

 先ほど指定したEXPOSEとVOLUMEの設定内容が反映されていることが確認できました。

 このDockerイメージを使用してコンテナを起動した場合、コンテナ内の8080番ポートが公開され、コンテナ内の/optがDockerホスト上のファイルシステムと接続されます。

リモートにあるアーカイブファイルをhttp経由で受け取りDockerイメージをインポートする

 Webサーバmyweb.com上にあるtestvm.tarファイルを、URL指定でimportしてみます。

$ docker import http://myweb.com/testvm.tar testvm:v10.0

※myweb.comは私のローカルネットワーク上のWebサーバの1つです。外部からは接続できません。

 以下のように、webサーバからアーカイブファイルがダウンロードされて、Dockerイメージがインポートされました。

Downloading from http://myweb.com/testvm.tar
sha256:3876b4203339a7e8669473e6a2a39ad97df4f76ddef53b3a737d8952329930f5

 docker imagesコマンドで確認してみます。

$ docker images
REPOSITORY    TAG    IMAGE ID      CREATED         SIZE
testvm        v10.0  3876b4203339  5 seconds ago   73.9MB

 インポートされていることが確認できました。

標準入力からアーカイブファイルの内容を受け取りDockerイメージをインポートする

 docker importコマンドのimportファイルを指定する部分に「-」を指定した場合、アーカイブファイルの情報を標準入力から受け取ることができます。

 以下は、catコマンドで出力したtestvm.tarの内容を、docker importコマンドで受け取る場合の例になります。

$ cat testvm.tar | docker import - testvm:v11.0

 docker imagesコマンドで確認します。

$ docker images
REPOSITORY    TAG    IMAGE ID      CREATED         SIZE
testvm        v11.0  08f04e0e9e38  41 seconds ago  196.8 MB

 Dockerイメージがインポートされていることが確認できました。

 以下の形式でも実行可能です。

$ docker import - testvm:v12.0 < testvm.tar

おわりに

  以上でdocker importコマンドの紹介を終わります。

 ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。

 他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(CE対応版)(オリジナルな実例付き)」をご参照ください。

 ご訪問ありがとうございました!

コメント

タイトルとURLをコピーしました