古くからのBSDな友達KとのDockerに対する対話
むとうは普段関西*BSDユーザ会などで活動しているBSD好きの人間です。
最近、20年以上前からのBSD友達KとDockerについて対話したので、その時の話をご紹介します。
以下、(K)は友人、(M)はむとう。
はじめに
(M)とりあえず、これ読め。
攻めのITのためのDocker塾
第24回 非Linux環境のDocker FreeBSDで実際に動かしてみると……
第20回 Dockerで3Dゲームを動かす
仮想化の方式
仮想マシン(Virtual Machine:VM)
ハードウエアごと仮想化する(完全にコンピュータをエミュレーションする)。
オーバヘッドが大きい。
コンテナ型仮想化
OS(kernel)上のファイルシステム、プロセス、ユーザなどのみ仮想化(名前空間の分離)する。
kernelは共有しているため、コンテナホストkernelと同じkernelで使えるものしか動かない。
オーバヘッドが小さい。
VMによる仮想化の例
FreeBSD bhyve
macOS: Hypervisor.framework
Windows: Hyper-V
VirtualBox: FreeBSD用、macOS用、Windows用、Linux用などに対応
qemu: 完全にソフトウエアによるエミュレーションのため、遅い
コンテナ仮想化の例
FreeBSD jail
Linux Docker
Solaris zone
OpenVZ
LXC
で、Docker
Linuxのコンテナ型仮想化技術
あくまで、Linux kernel上で動くコンテナ。
macOSやWindowsで動いているのは、VM上でLinux kernelを動かしている。
macOS: Hyperkit (Hypervisor.framework)
Windos: Hyper-V + Windows/Linuxコンテナ
なぜ、jailはコンテナ型仮想化としては先んじていたのに負けたのか? from FreeBSD Workshop 2020/11/27 slackコメントとむとうの意見より
ツールとしての使いやすさ(jail pullとかあれば…)
デファクトスタンダードになったことの優位性
エコシステムの完成
Docker hubでのコンテナイメージ共有とそのイメージの流用の容易性。
Q&A
Q(K):「Docker ホスト= Linux のみ」,「Docker = Linux のみ」ですかぁ…結局 Linux でのみ動作するアプリケーションを動かしたい人だけに限られるのでは?
A1(M): いや、VM使って、macOSでもWindowsでもホストできますがな。
そして、FreeBSDでもjail+Linuxlatorとかで動くといいですね(/BSD/Docker on FreeBSD)。
A2(M)
macOS, Linux, Windowsの3大プラットフォームだけで提供されてるソフト多いのでそれでいいじゃん。
サーバで使うhttpdとかはLinux用のもので十分じゃ…
GPU使うとなると、Linuxが一択のような気もするぞ。