LoginSignup
6
6

More than 5 years have passed since last update.

Dockerイメージの差分管理

Last updated at Posted at 2017-09-15

Dockerイメージの差分管理

最近,研究室内の勉強会で調べる機会があったのでメモメモ...
12/6 に追記

イメージは差分の集まり

Dockerのイメージは複数のレイヤが重なって構成されています.
レイヤとは docker run でコンテナを立ち上げてから docker commit でイメージ化するまでの間に発生したファイルの差分にあたります.

例えば,
スクリーンショット 2017-09-15 15.53.55.png

こちらのようにDebianのベースイメージを元に

  • A というものを追加した
  • B というものを追加した

という差分が重なることでイメージが構成されます.

差分の管理方法

Docker はAUFSというファイルシステムを使っているらしい...
ディストリビューションの標準ストレージ・ドライバを使うそうです。Docker をインストールする時, システム上の設定に応じてデフォルトのストレージ・ドライバを選択します.

AUFSはLinuxのライブCDに使われています.ライブCDって,ハードディスクに書き込みできないのにファイルを保存できたりします.それはAUFSが下記の動きをしてくれているためです。

  1. CD-ROMのOS部分をRead-Onlyとする.また,メモリ上にWritableな領域を確保.
  2. ファイルシステムに変更があったら,メモリ上に差分だけを書き込む.
  3. 結果,Read-Only領域(元の状態)にWriable領域(差分)を重ねるとディスクに書き込んだのと同じ状態になる.

よって,先ほどの図は

Debian~add BがRead-Onlyな領域、一番上のレイヤがWritableな領域となる.

今の状態で docker commit すると,一番上のレイヤも含めてRead-Only化されたイメージができあがり, また、作られたイメージを元に docker run すると,新しく一番上にWritableなレイヤが作られる仕組み.

とりあえず,こんな感じ
あとは実際に見てみると良いかも...

 参考

6
6
1

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
6
6