LoginSignup
1
0

More than 3 years have passed since last update.

Dockerの仕組みを超ざっくりまとめ

Last updated at Posted at 2020-12-10

概要(簡単にまとめ)

  • DockerはDocker Engineのある環境で動く
  • 実行環境をコンテナという単位で管理し、それぞれは隔離されている。
  • コンテナはイメージというものから作成されて、そのイメージとやらはDockerHubというリポジトリから取得できる
  • コンテナにはOSなどがなくオーバーヘッドが少ない(VirtualBoxなんかは仮想化された環境ごとにOSが存在する)

疑問

dockerイメージにはLinuxディストリビューションが配布されている
= dockerのコンテナ上にはOSができる場合もあるのではないか。

別の言い方をすれば、ホストOSと違うOSベースのコンテナイメージが
何故Docker上で動くのか

答え

Linuxカーネルには互換性があり、その範囲内であれば
異なるカーネル上でも同じ実装でアプリケーションは動作できるから
  • コンテナはホストOSのカーネルに対して、ABIというインターフェースを介してシステムコールを行っている
  • Linux系と呼ばれるOS群にはRHEL、CentOS、Ubuntuとかたくさんあるけど、これらは基本的に共通のカーネルを使用している。
  • Linuxカーネルにもバージョンが存在するが、古いバージョンであってもABIに対しては同じ仕様で呼び出すことができる。

=> つまり、コンテナ内に存在しているのはアプリケーションの実行に必要なライブラリや特定のディストリビューション上でのファイルシステムである、ということが言える。

あれ、でもそれってLinux OSだった場合の話でWindows/Macの場合は話が違うよね?

【答え】 Docker for Macなどのソフトをインストールして代替。 
  • Macに関してはHyperkitという仮想化ツールでdockerホストとなるVMを作ることで対応しているらしい。つまり、MacOSにABIを被せているわけではなく、LinuxOSを別個に立てて、そこでよしなにやってくれるらしい
  • windowsの細かいことは分からないです。ただ、Macと同様の仕組みがあるらしい。

参考

https://qiita.com/kirikunix/items/33414240b4cacee362da
https://thinkit.co.jp/article/17301

最後に

間違ったこと書いてたらツッコミくれると助かります。

1
0
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
1
0