背景
現在、より簡単に環境構築を済ませたいなと思いDockerの勉強を行っています。
しかし、Dockerのコンテナの仕組みについてわからない点があります。
不明点
現在、私はMacでDocker for Macを使用しています。
Docker for Macは、Linuxでは無いので当然通常のLinuxコンテナは動きません。
そのため、Mac上のデーモンで、仮想の軽量Linuxを動かして、コンテナを起動させている、と理解しています。
そのため、現状ホストOSがLinuxであるという前提で質問させていただきたいです。
こちらのページ
の「コンテナ型仮想化」で、コンテナ型仮想化を行うと、
LinuxOS上で動くDockerEngineというデーモンの上で、それぞれのコンテナがホストOSを共有して動いているとあります。
この「Dockerのコンテナは、ホストOSLinux資源を共有するのか?」が一つ目の不明点です。
2つ目として、ホストOSがLinuxであるとき、他のLinuxの起動の仕組みが分からないという点です。
ホストOSがCentOSで、CentOS上でDockerデーモンを起動し、Ubuntuのコンテナを起動したとします。
このとき、このUbuntuコンテナは、どうホストOS上で動いているのでしょうか?ホストOSのCentOSの資源を共有しながら、Dockerデーモンの仮想プロセスの一つとして、Ubuntuが起動しているのでしょうか?
3つ目として、ホストOSLinux上で、他のLinuxを起動させる場合と、プログラミング環境のコンテナを起動させる違いがわからないという点です。
例えば、gccのC言語のイメージのDockerfileを見ると,jessieという軽量LinuxをFROM・ベースとして、その後jessie上でGCCの実行のための用意を行っています。
しかし、そもそもコンテナはホストOSを共有・利用するはずで、jessieのような軽量LinuxOSは必要ないはずです。
また、こちらのページの図1にあるように、DockerEngine上でBins/Libs、つまりGCCのコンパイラのみを持ってくればいいのに、軽量Linuxを使用しています。
質問点
質問させていただきたい内容として
- Dockerのコンテナは、ホストOSLinux資源を共有するのか?
- もし共有するなら、ホストOSLinux上で、別のLinuxコンテナを起動しているのはおかしくないか? ホストOSのプロセスの一つとしてLinuxコンテナを起動しているのか?
- ミドルウェア(プログラミングコンパイラ、Pythonなど)をコンテナで使用する場合、LinuxをFROMにしているがどうしているのか?Bin/Libsだけ持ってきて、ホストOSを使用すればいいのではないか?
です。
何卒、よろしくお願いいたします。
実行環境
Mac
docker desktop community: version 2.1.0.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/24 03:49
2019/09/24 03:55
2019/09/24 04:32
2019/09/24 04:36
2019/09/24 04:40
2019/09/24 04:41
2019/09/24 04:56