LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

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

概要(簡単にまとめ)

  • 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

最後に

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

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
What you can do with signing up
0