docker のイメージやコンテナをファイルにエクスポート、ファイルからインポートする方法を紹介します。
イメージやコンテナを簡単に他のパソコンへ移動できるので、環境などの移動が楽になります。
docker には、イメージを保存する save コマンドと、コンテナを保存する export コマンドがあります。
保存されるファイル形式は、圧縮ファイル .tar にまとめられます。
ここでは、以下で紹介したイメージとコンテナを使って解説します。
docker image を保存・読込
イメージの保存(save)
save の構文
docker save [オプション] イメージ名
docker イメージに付随するメタ情報を含めたイメージをファイルに保存します。
scue/docker-opengrok というイメージを保存する場合は、以下のコマンドを実行します。
docker-save
$ sudo docker save scue/docker-opengrok > docker-opengrok.tar
どのようなイメージがあるかどうかは「$ sudo docker images」で確認できます。
イメージの読込(load)
docker save で保存したイメージは、load コマンドを使って docker image として読込みできます。
docker-load
$ sudo docker load < docker-opengrok.tar
docker container を保存・読込
コンテナの保存(export)
export の構文
docker export [オプション] コンテナ名|コンテナID
docker のコンテナを保存します。
docker のメタ情報などは保存されず、ファイルシステムのコピーがそのまま保存されます。
opengrok のコンテナを保存する場合は、以下のコマンドを実行します。
docker-export
$ sudo docker export opengrok > opengrok.tar
どのようなコンテナがあるかは「$ sudo docker ps」で確認できます。
コンテナの読込(import)
import の構文
docker import ファイル - [リポジトリ[:タグ]]
docker export で保存したコンテナは、import コマンドを使って docker container として読込みます。
ファイルシステムを .tar で圧縮したファイルも、コンテナとして読込みできます。
docker-import
$ cat opengrok.tar | docker import - opengrok:v1.0.7
docker save / load / export / import まとめ
docker イメージを保存・読込するのは「save と load」を、
docker コンテナを保存・読込するのは「export と import」を使います。
docker のイメージは、ファイル差分がレイヤが重なるような構成となっており、
save はレイヤの情報(メタ情報)なども含めた状態で保存されます。
一方、 export はメタ情報は保存されず、ファイルシステムだけが保存されます。
参考