LoginSignup
50
47

More than 5 years have passed since last update.

Dockerのsaveとexportの差異

Last updated at Posted at 2015-11-17

Dockerでイメージを永続化するには通常commitを使うが、この他に状態保存に関するコマンドとしてsaveexportがある。いずれもコンテナをtarにまとめて吐き出すような挙動をするが、それぞれ動作が異なる。

Dockerコンテナの内部構成

その前にDockerコンテナの内部構成に関して把握する必要があるが、以下のページが大変詳しくて参考になった。

Dockerイメージの差分管理についてまとめてみた | TANKSUZUKI.COM

Dockerコンテナは構成を「差分」という形で管理していく。Dockerfile内でRUNADDを行うと、それは都度差分として記録されるので、闇雲にRUNを重ねるとコンテナがぶくぶくと膨れていく。ちなみに差分(レイヤー)数の上限は127だそうだ。

saveとexportの差異

そういったコンテナの構成を踏まえてのこれらのコマンドの差異を見る。

  • save 上記のレイヤーやタグといったメタ情報含めてコンテナをtarでまとめる。
  • export ファイルシステムを愚直にtarでまとめ、メタ情報は無視される。

つまりはいわゆる「Dockerコンテナ」として保存できるのはsaveの方であり、exportはDockerとしての構造、情報などは無視され、通常のサーバーと同様のルート以下ファイルシステムが保存されるだけ。例えばDocker Hubを使わずにローカルでコンテナを別のDocker環境へ引き渡したい、といった用途であれば、saveしてloadしてもらう形になるかと思う。

(参考)
* save (Docker Docs)
* export (Docker Docs)
* Difference between save and export in Docker – Thomas Uhrig

50
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
47