本記事はDocker ver24.0.7の環境で確認しています。
このコマンドは、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イメージを作成する際、まずベースとなるコンテナを作成し、そのコンテナにアプリなどをインストールした後、docker exportコマンドでtarファイルに出力します。
そのtarファイルをdocker importコマンドでレポジトリにインポートすれば、Dockerイメージを作成することが可能です。
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のコマンドの一覧(オリジナルな実例付き)」をご参照ください。
ご訪問ありがとうございました!
コメント