DockerコンテナベースDockerコンテナベース:ファイルシステムファイルシステム
4183 ワード
Cgroup
とNamespace
の管理の下で、容器は実は1つの隔離と制限の
で、それでは容器のファイルシステムはまたどのように隔離したのですか?Chrootコマンド
chroot :
# /bin/bash /leon0204/home
# ls /leon0204/home
$ chroot /leon0204/home /bin/bash
/bin/bash
では、ルートディレクトリが変更され、ビューを変更する方法とnamespaceが原理です.Rootfs
前節では、コンテナが開始されたのは親プロセスとN個のforkから出た子
であり、この親プロセスはchroot
によってビューが変更されたため、コンテナのルートディレクトリは隔離されたサブディレクトリであり、このディレクトリをシステムのように見せるために、このディレクトリの下に 、
を追加することが多いことを知っています.例えば、/bin
、/etc
などです.rootfs
コンテナミラーリング自体は、オペレーティングシステムに含まれるファイル、構成、ディレクトリであり、オペレーティングシステムカーネルは含まれていません.Linuxシステムの起動時にシステムカーネルをロードする必要があります.では、ミラーのrootfsには
がありません.どのように正常にロードしますか?docker
のカーネルは
に確立されているため、ホストとカーネルを共有し、docker
であることを覚えておいてください.したがって、docker
のrootfs
は、実際にパッケージ化されているのは、アプリケーションだけでなく、言語的な依存ではなく、アプリケーションが実行するすべての依存である.これにより、マシン間の環境同期の問題が解決されます.Layerはレイヤ別に公開
A同僚は1つのJAVAアプリケーションを発表して、1つのオペレーティングシステムのrootfsを含んで、B同僚は1つのJAVAアプリケーションを発表して同様に1つのrootfsを作る必要があって、どのように私達の間の
を抽出しますか?ベースのミラーを作成します(
)?dockerはこの実装において,base image
(層)という概念を導入し,AとBがlayer
ミラーリングシステムを作成する際に,rootfs docker
を記録し,
としてAB rootfsの交差を取って我々JAVA
を形成し,以降,それぞれのアプリケーションでこのミラーリングを用いることができることを発表した.UFS
base
. UFS Union File System
:機能は、複数の異なるディレクトリUnionFS
を1つのディレクトリの下に、例えばAとBディレクトリのファイルをCディレクトリの下に共同でマウントすることができる.このようにA&Bの下のファイルはCとマウントされ,unoin mount
増減が変化する.AUFS
はUnion FSの書き換えと改良されたバージョンであり、これもAUFS
で使用されているバージョンであり、docker
のミラーを例に、このミラー(rootfs)のAUFS構造を以下のように表示する.[root@macco-web ~]# docker image inspect mysql:5.6
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:9c2f1836d49346677f8280bf0eb89c20853f6af4aa6e2fad87b0000bb181fad2",
"sha256:fd3b39222ee496a3cc115a4142a26babcad2f2008f4053ad5f893fcc503cd7fe",
"sha256:7ffd9f004dec5b25c7861e97e8f4ed5534f980b270fe03d0b834c0e6db843564",
"sha256:c782fd1b83e9e2b2a904c57cb887b59fd58704712ad73452de817abbd2d766a8",
"sha256:db76afa2e4c2f4c0077d028f37d73a6408cf2fc4bca1b0156225edd02f7e5cbc"
]
},
このdockerは
Mysql:5.6
個5
(layer
)から構成されていることがわかります.各層は実際にはシステムの構成部分であり、
を含み、使用時に
を使用してAUFS
サブシステムを構成しています.このディレクトリの下にどのような文書があるかを確認します.# pwd
/statics/docker/overlay/f8611219ff61896ca3ac0edc4e1c2207f934da81492c901b7768d115896f8cab/root
# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
まとめ
コンテナは、
rootfs
を介してaufs
の完全なdocker
ファイルシステム、すなわち、コンテナミラーを作成します.ミラーはまたrootfs linux
階層設計を通じて、ミラーの設計をインクリメンタル化し、コラボレーションのbaseをより小さくし、コラボレーションの方式をより迅速にし、誰もがlayer
を使用して容器base
を実現した.Namespaceを隔離する.Cgroupsは制限をします;Rootfsがサブシステムを作る