docker loadコマンドの使い方(実例付)CE対応


 docker loadコマンドの使い方を解説します。Docker CE ver18.06.0に対応してます。

 このコマンドは、docker saveコマンドにて出力したtarファイルの内容を、Dockerイメージとして格納することが出来ます。

 1つのtarファイルに複数のDockerイメージが格納されている場合は、それぞれ別々の複数のイメージとして展開されます。

 docker loadコマンドへの入力形式としましては、tarの他に、tar.gz、tar.bz2、tar.xzがサポートされてます。

 それでは以下で詳細に解説いたします。

 

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

フォーマット

docker load [オプション]

 

主なオプション一覧

-i、 --input
Dockerイメージが格納されているアーカイブファイルを指定します。

-q
サイレントモードで処理を行います。

■ 本記事の目次に戻る ■

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

 以下の実例は、CentOSの公式イメージにより起動したコンテナ(testvm)を使用します。コンテナは「docker run -d --name testvm centos init」で起動します。

 

圧縮ファイル内のイメージをDockerイメージとして展開する

 Dockerイメージが格納されているtarファイルがあります。このtarファイルはdocker saveコマンドで作成したものです。

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

$ ls -l
合計 387412
-rw------- 1 test01 users 132771840 10月 6 13:21 testimage.tar

 このファイルには、Ubuntuの最新版Dockerイメージが格納されてます。このファイルのイメージをDockerイメージとして展開します。

$ docker load < testimage.tar

 以下のようなメッセージが出力されたあと、Dockerイメージが展開されます。展開されたイメージの名前が、メッセージの一番下の行に出力されてます。

040ba7b9591c: Loading layer 132.7 MB/132.7 MB
e15f8eeda399: Loading layer 15.87 kB/15.87 kB
a9ee34f9e4e2: Loading layer 9.728 kB/9.728 kB
0c291dc95357: Loading layer 4.608 kB/4.608 kB
f215f043863e: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest

 出力されたイメージをdocker imagesコマンドにて確認します。

$ docker images ubuntu:latest

 以下の内容が出力され、Dockerイメージが展開されていることが確認できました。

REPOSITORY      TAG      IMAGE ID        CREATED       SIZE
ubuntu          latest   c73a085dc378    9 days ago    127 MB

 docker loadコマンドは、オプションを付けない場合は、標準入力からDockerイメージの内容を読み込みます。よって、ファイルのリダイレクトを使用して読み込ませることで、Dockerイメージの展開処理が実行されました。

 「-i」オプションを使用することで、入力元の圧縮ファイルを指定することも可能です。次の項でご紹介します。

■ 本記事の目次に戻る ■

オプション「-i」で入力元の圧縮ファイルを指定する

 Debianの最新Dockerイメージが格納されているtarファイルがあります。

$ ls -l
合計 387412
-rw------- 1 test01 users 128862208 10月 6 14:46 testimage2.tar

 このファイル内のイメージをdocker loadコマンドで「-i」オプションを使用して展開してみます。

$ docker load -i  testimage2.tar

 出力されたDockerイメージをdocker imagesコマンドにて確認します。

$ docker images debian

 以下の内容が出力され、Dockerイメージが展開されていることが確認できました。

REPOSITORY     TAG      IMAGE ID        CREATED       SIZE
debian         latest   ddf73f48a05d    12 days ago   123 MB

■ 本記事の目次に戻る ■

複数のDockerイメージが格納されている圧縮ファイルをDockerイメージとして展開する

 以下のファイルには、docker saveコマンドにて、2つのDockerイメージ(local/centos7-baseとcentos)を格納してあります。

$ ls -l
合計 598784
-rw------- 1 test01 users 408748032 10月 6 11:05 testimage-2.tar

 このファイルをdocker loadコマンドでDockerイメージとして展開してみます。

 現状、local/centos7-baseとcentosのDockerイメージが存在しないことを確認しておきます。

$ docker images centos
REPOSITORY     TAG      IMAGE ID        CREATED       SIZE

$ docker images local/centos7-base
REPOSITORY     TAG      IMAGE ID        CREATED       SIZE

 では、先ほどのファイルを展開してみたいと思います。

$ docker load -i testimage-2.tar

 以下のような内容が出力されました。

Loaded image: local/centos7-base:latest
c4af1604d3f2: Loading layer 204.4 MB/204.4 MB
Loaded image: centos:latest

 2つのイメージがロードされたようです。確認してみましょう。

$ docker images centos
REPOSITORY          TAG     IMAGE ID      CREATED       SIZE
centos              latest  05188b417f30  3 months ago  196.8 MB
$ docker images local/centos7-base
REPOSITORY          TAG     IMAGE ID      CREATED       SIZE
local/centos7-base  latest  84ebebe0d954  4 months ago  196.7 MB

 先ほどは無かった2つのDockerイメージがロードされてます。

■ 本記事の目次に戻る ■

docker saveコマンドでイメージIDを指定して出力したtarファイルを展開してみる

 通常、docker saveコマンドでDockerイメージをtarファイルに格納する場合は、対象イメージの指定にイメージ名を指定します。

 対象イメージの指定にイメージIDを指定してtarファイルに格納した場合、そのtarファイルをdocker loadコマンドで展開したら、どのように展開されるか見てみましょう。

 使用するtarファイルは以下のコマンドで作成しました。ちなみに対象のイメージ名「centos:latest」です。

$ docker save -o testimage-o.tar 49f7960eb7e4

 tarファイルを展開する前に、対象のイメージファイルを削除します。

$ docker rmi 49f7960eb7e4

 では、展開してみます。

$ docker load -i testimage-o.tar

 以下のように出力されました。

bcc97fbfc9e1: Loading layer 208.2MB/208.2MB
Loaded image ID: sha256:49f7960eb7e4cb46f1a02c1f8174c6fac07ebf1eb6d8deffbcb5c695f1c9edd5

 「Loaded image: <イメージ名>」の出力は無く、「Loaded image ID: xxxxxxxxxxxxxx」と、イメージIDがロードされた旨のメッセージとして出力されていますね。

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

$ docker images
REPOSITORY     TAG     IMAGE ID      CREATED       SIZE
<none>         <none>  49f7960eb7e4  7 weeks ago  200MB

 イメージ名が「<none> <none>」のDockerイメージが展開されてます。イメージIDはdocker saveコマンド実行時に指定したものと同じIDになってます。

 このように、docker save時にイメージ名を指定しなかった場合は、イメージ名が無い状態で展開されてしまいます。

 よって、特別な理由が無い限り、docker save時はイメージ名を指定して行いましょう。

 ちなみに、イメージ名が無いDockerイメージに名前を付ける場合は、docker tagコマンドを使用します。

■ 本記事の目次に戻る ■

サイレントモードで実行する

 docker loadコマンドにてDockerイメージを展開する際に、画面上に、例えば以下のような内容が出力されます。

040ba7b9591c: Loading layer 132.7 MB/132.7 MB
e15f8eeda399: Loading layer 15.87 kB/15.87 kB
a9ee34f9e4e2: Loading layer 9.728 kB/9.728 kB
0c291dc95357: Loading layer 4.608 kB/4.608 kB
f215f043863e: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest

 この出力が邪魔になる場合もあるかと思います(例えば、シェルスクリプトを組む場合など)。

 その際は「-q」オプションを指定して実行します。

 但し、「-q」オプションを指定した場合でも、最終行の「Loaded image:」は出力されます。

$ docker load -q -i testimages3.tar
Loaded image: ubuntu:latest

■ 本記事の目次に戻る ■

tar形式以外のtar.gz、tar.bz2、tar.xz形式のファイルを読み込ませる

 3種類の圧縮ファイルを準備しました。順番にdocker loadコマンドで展開してみます。

 最初は、tar.gz形式です。

$ docker load -i testimages3.tar.gz

 以下のように出力されました。問題無く読み込まれました。

040ba7b9591c: Loading layer 132.7 MB/132.7 MB
e15f8eeda399: Loading layer 15.87 kB/15.87 kB
a9ee34f9e4e2: Loading layer 9.728 kB/9.728 kB
0c291dc95357: Loading layer 4.608 kB/4.608 kB
f215f043863e: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest

 次は、tar.bz2形式です。

$ docker load -i testimages3.tar.bz2

 以下のように出力されました。問題無く読み込まれました。

040ba7b9591c: Loading layer 132.7 MB/132.7 MB
e15f8eeda399: Loading layer 15.87 kB/15.87 kB
a9ee34f9e4e2: Loading layer 9.728 kB/9.728 kB
0c291dc95357: Loading layer 4.608 kB/4.608 kB
f215f043863e: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest

 最後に、tar.xz形式です。

$ docker load -i testimages3.tar.xz

 以下のように出力されました。問題無く読み込まれました。

040ba7b9591c: Loading layer 132.7 MB/132.7 MB
e15f8eeda399: Loading layer 15.87 kB/15.87 kB
a9ee34f9e4e2: Loading layer 9.728 kB/9.728 kB
0c291dc95357: Loading layer 4.608 kB/4.608 kB
f215f043863e: Loading layer 3.072 kB/3.072 kB
Loaded image: ubuntu:latest

 

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

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

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

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


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください