本記事は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、--input | Dockerイメージが格納されているアーカイブ ファイルを指定します。 |
-q | サイレントモードで処理を行います。 |
コマンド例
$ docker load < testimage.tar
$ docker load -i testimage2.tar
docker loadコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
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コマンドの一覧(オリジナルな実例付き)」をご参照ください。
ご訪問ありがとうございました!
コメント