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


 docker saveコマンドの使い方を解説します。Docker CE ver17.12.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コマンドの主な使い方

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

 

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 loadコマンドを使用してdockerイメージとして格納することが可能です。

 docker saveコマンドは、オプションを付けない場合は、標準出力にtar形式のバイナリ情報が出力されます。よって、そのバイナリ情報をファイルにリダイレクトさせ、tarファイルに格納しました。

 「-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のコマンドの一覧(ver1.12対応版)(オリジナルな実例付き)」をご参照ください。

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


コメントを残す

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