1 階層型ファイルシステム
UnionFS ユニオン ファイル システム
- bootfs:ブートファイルシステム
- rootfs:ルートファイルシステム
階層型ファイルシステム
- Docker イメージは読み取り専用です。コンテナーが開始されると、新しい書き込み可能なレイヤーがイメージの最上部に追加されます。このレイヤーは、通常、コンテナー レイヤーと呼ばれるものです。コンテナー レイヤーの下にあるものはすべてイメージ レイヤーと呼ばれます。
2 コミットコミットイメージ
docker commit # 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
- 新しいイメージを作成する
➜ ~ docker commit -a="zhangxiaoyude" -m="add webapps app" 7b8096067457 tomcat02:1.0
sha256:6e0e1ad86723c435bdf26d368472195b7050de1d6b920252d9c93eac26132336
➜ ~ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat02 1.0 6e0e1ad86723 20 seconds ago 478MB
- 新しい画像をチェックしてください。新しいバージョンには変更が記録されているため、前のバージョンよりも大きいことがわかりました。
docker commit コマンドを使用すると、イメージ階層化ストレージの概念を直感的に理解できますが、実際の環境ではこのように使用されません。
まず、以前の docker diff Web サーバーの結果を注意深く観察すると、実際に変更したい /usr/share/nginx/html/index.html ファイルに加えて、多くのファイルが変更されていることがわかります。またはコマンドの実行により追加されます。これは最も単純な操作ですが、ソフトウェアパッケージをインストールしてコンパイルしてビルドすると、関係のないコンテンツが大量に追加され、慎重に掃除しないとイメージが非常に肥大化します。
また、docker commitを使用するということは、イメージに対するすべての操作がブラックボックス操作になることを意味し、生成されるイメージはブラックボックスイメージとも呼ばれます。画像を生成することは他の誰も知る方法がありません。さらに、画像を作成した本人も、時間が経つと自分が何をしていたか正確に思い出せなくなります。docker diff はいくつかの手がかりを提供することはできますが、一貫したイメージが生成されることを保証できる段階からは程遠いです。このブラックボックスイメージを維持するのは非常に骨が折れます。