1.save → load
Dockerイメージを save でtarファイルに保存して、load で作成してみる。
ubuntu イメージをダウンロード。
$ docker pull ubuntu
ubuntu イメージがダウンロードされたことを確認する。
$ docker images
ubuntu イメージを ubuntuv2.tar で圧縮する。
$ docker save ubuntu -o ubuntuv2.tar
圧縮され、保存されていること確認。
$ file ubuntuv2.tar
次に解凍したものとわからなくならないようにするため、一旦既存の ubuntu イメージを削除。
$ docker rmi ubuntu
ubuntuv2.tar を解凍する。
$ docker load -i ubuntuv2.tar
イメージが改めて作成されたことを確認する。
$ docker images
2.export → import
Dockerファイル、nginxv2 を nginxv3_tar としてエクスポートします。
$ docker export nginxv2 > nginxv3_tar
nginxv3_tar が作成されたことを確認します。
$ ls -l nginxv3_tar
nginxv3_tar を nginx:v3 でインポートします。
$ docker import nginxv3_tar > nginx:v3
イメージが作成されたことを確認します。
$ docker images
3.どっち?
saveはイメージを保存、
exportはコンテナを保存
という違いがあります。
その上で、両者の違いとして大きいのはメタ情報を保存するかどうかという点です。
Dockerのイメージは、ファイル差分がレイヤが重なるような構成となっており、
saveはレイヤの情報なども含めた状態で保存されます。
exportはDockerとしての構造やメタ情報は保存されず、ファイルシステムだけが保存されます。