つにまとまっている(移行しやすい) ◦ これらを組み合わせて大きなサービスを構築する • 様々なところで使われている ◦ サービスの各コンポーネント ◦ CI/CDにおける各ジョブ ◦ 個人の PC 上での開発・テスト環境 A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. https://www.docker.com/resources/what-container
Guest OS を動かさなくて済む ▪ Bootstrap 処理の省略やリソース節約のメリット ◦ OS or コンテナ管理ソフトウェアに依存することで移行しやすくなる • 著名なコンテナの仕組みは 2007 年に大体揃う ◦ cgroups (2007), namespace (2002) ◦ 分離に関しては UnixV7 の chroot から (1979) ◦ コンテナらしいものは FreeBSD Jail から (2000) • VM を使ったコンテナ表現もあるので OS Virtualization = コンテナではない Hardware Host OS Process Process OS Virtualization Process
③システムコール呼び出し ◦ ⑦ユーザー命令 • 逆に ABI が同じなら動く ◦ RHEL, Ubuntu など Linux 系は ABI が統一されている • VM だと ISA レベルの制約 ◦ Emulator (QEMU など) が 挟まるとその限りではない (Appendix) Virtual Machines: Versatile Platforms for Systems and Processes
• VM の強み ◦ 隔離性に優れている ◦ ライブマイグレーション技術が枯れている ▪ コンテナにも Checkpoint/Restore 技術 (CRIU) はあるがそれを運用 しているところは少ない ▪ 多くのコンテナ管理ミドルウェアでは ステートレスが良しとされているので そこまで使われない (メリットが薄い) Host OS HW Virtualization HW Virtualization Hardware Guest OS OS Virt. Guest OS OS Virt. Process Process Process