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

docker loadコマンド解説

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

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

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

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

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

フォーマット

docker load [オプション]

主なオプション一覧

オプション概説
-i、--inputDockerイメージが格納されているアーカイブ
ファイルを指定します。
-qサイレントモードで処理を行います。

コマンド例

$ docker load < testimage.tar
$ docker load -i testimage2.tar

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

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

実例では、Ubuntuの公式イメージにより起動したコンテナ(testvm)を使用します。

コンテナは「docker run -dit --init --name testvm ubuntu」で起動します。

※「--rm」オプションを付けておりませんので、ご利用後はコンテナ削除をお忘れなく。

基本事項の解説

 docker loadコマンドは、docker saveコマンドで作成したtarファイルをDockerイメージとして展開(解凍)することができます。

 「-i」オプションは、入力するtarファイルを指定します。

 オプションを付けない場合は標準入力を使用してtarファイルを読み込むことになりますので、docker loadコマンドにリダイレクトで入力してください。

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

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

 最初は、オプションを使用せずに、ファイルのリダイレクトによってtarファイルを読み込ませる方法です。

 Dockerイメージが格納されているtarファイルがあります。このtarファイルは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

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

 「-i」オプションを使用することで、入力元のtarファイルを指定することできます。

 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

※「49f7960eb7e4」は、tarファイルに出力するイメージ「centos:latest」のイメージIDです。

 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 tagコマンドに関しましては別記事「docker tagコマンドの使い方(実例で解説)」をご参照下さい。

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

 コマンド実行時に出力されるメッセージをカットするオプション「-q」の使い方です。

 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形式のファイルを読み込ませる

 docker loadコマンドは、上の3種類の形式に対応してます。

 3種類の圧縮ファイルを準備しましたので、実際に試してみます。

 最初は、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コマンドの一覧(オリジナルな実例付き)」をご参照ください。

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

コメント