本記事はDocker ver27.5.1の環境で確認しています。
このコマンドは、Dockerホスト上に格納されているDockerイメージをtarファイルに出力することができます。
docker saveコマンドにて出力したtarファイルは、docker loadコマンドにてDockerイメージに戻すことが可能です。
よって、Dockerイメージのバックアップとしても利用可能です。
tarファイルに出力するDockerイメージは複数個指定することが可能でして、複数個のDockerイメージを1つのtarファイルに格納することができます。
複数個のDockerイメージが格納されたtarファイルをdocker loadコマンドで戻した場合は、一度に複数のDockerイメージがDockerホスト上に格納されます。
docker saveコマンドのフォーマットとオプション
フォーマット
docker save [オプション] [イメージ] [イメージ...]
主なオプション一覧
オプション | 概説 |
---|---|
-o | 出力先のtarファイルを指定します。 「-o」オプションを指定しない場合は、標準 出力に出力されますので、tarファイルにリダ イレクトさせることも可能です。 |
コマンド例
$ docker save local/centos7-base > testimage.tar
$ docker save -o testimage-o.tar local/centos7-base
docker saveコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
docker saveコマンドは、Dockerホスト内に格納されているDockerイメージをtarファイルに出力することができます。
「-o」オプションは、出力先ファイルを指定します。
オプションを付けない場合は、Dockerイメージの内容が標準出力に出力されますので、ファイルにリダイレクトさせることになります。
Dockerイメージをtarファイルに出力する
Dockerホスト上にありますDockerイメージを、tarファイルに出力します。
まずは、docker imagesコマンドで、格納するDockerイメージの名前を確認します。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local/centos7-base latest 84ebebe0d954 4 months ago 196.7 MB
このDockerイメージをtarファイル(testimage.tar)に出力してみます。
$ docker save local/centos7-base > testimage.tar
tarファイルが作成されているか確認します。
$ ls -l
合計 199604
-rw-rw-r-- 1 test01 users 204382720 10月 6 10:21 testimage.tar
作成されていることが確認できました。
このように、docker saveコマンドは、オプションを付けずに実行しますと標準出力にtar形式のバイナリ情報が出力されます。
ちなみに、docker saveコマンドで出力したファイルは、docker loadコマンドを使用してDockerホストにdockerイメージとして格納することが可能です。
また、「-o」オプションを使用して、出力先のtarファイルを指定することも可能です。
次の項でご紹介します。
オプション「-o」で出力先のtarファイルを指定する
先ほど出力しましたDockerイメージを、今度は「-o」オプションでtarファイルを指定して出力してみます。
$ docker save -o testimage-o.tar local/centos7-base
tarファイルが作成されているか確認します。
$ ls -l
合計 199604
-rw------- 1 test01 users 204382720 10月 6 11:01 testimage-o.tar
作成されていることが確認できました。
複数のDockerイメージを1個のtarファイルに格納する
以下のコマンドで、2個のDockerイメージ(local/centos7-baseとcentos)を1個のtarファイルに格納してみます。
$ docker save -o testimage-2.tar local/centos7-base centos
tarファイルが作成されているか確認します。
$ ls -l
合計 598784
-rw------- 1 test01 users 408748032 10月 6 11:05 testimage-2.tar
複数個のDockerイメージを格納したtarファイルを、docker loadコマンドでDockerイメージに戻した場合は、複数のDockerイメージとして展開されます。
リポジトリ名を指定してDockerイメージをtarファイルに出力する
出力対象の指定は、イメージ名(リポジトリ名:[タグ名])で行います。
もし、同じリポジトリ名でタグ名が異なるDockerイメージが存在する場合は、リポジトリ名が同じであるDockerイメージが、全て1つのtarファイルに格納されます。
例えば、以下のようにタグ名が異なるmariadbの公式イメージがあったとします。
$ docker images mariadb
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest 0112f2662974 3 months ago 387.6 MB
mariadb 10.0.24 c0a47bb982c0 5 months ago 338.8 MB
この状態で、以下のコマンドでDockerイメージをtarファイルに出力した場合は、2つのDockerイメージ両方とも1つのtarファイルに出力されます。
$ docker save -o mariadb-2.tar mariadb
よって、1つだけ指定してDockerイメージを出力対象にしたい場合は、リポジトリ名とタグ名の両方とも指定してください。
例えば、上の2つmariadbのDockerイメージのうち、タグ名が「10.0.24」のイメージのみtarファイルに出力したい場合は、以下のように対象のDockerイメージを指定します。
$ docker save -o mariadb-l.tar mariadb:10.0.24
イメージIDを指定して実行した場合
docker saveコマンドで、出力するDockerイメージの指定にイメージIDを指定することも可能です。
しかしその場合は、出力したtarファイルに出力対象のDockerイメージの名前が格納されないため、docker loadコマンドでDockerイメージに戻した場合、名前が無いDockerイメージとして格納されますのでご注意ください。
おわりに
以上でdocker saveコマンドの紹介を終わります。
ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。
他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」をご参照ください。
ご訪問ありがとうございました!
コメント