ようへいの日々精進XP

よかろうもん

Docker コンテナランタイムについて少しだけ勉強した (3)

tl;dr

会社から借りっぱなしの Software Design 2020 年 2 月号で特集されている Docker コンテナランタイムについての記事を読んでみたメモです.

gihyo.jp

読みながら気になる単語や内容をマインドマップにまとめていきたいと思います.

今回は世の中に出回っているランタイムについてまとめました.

マインドマップ

f:id:inokara:20200418182340p:plain

所感

色々なランタイム

  • それぞれ特徴があるけど, コンテナ to コンテナ, ホスト to コンテナの隔離には並々ならぬ (はちょっと大げさ) 拘りが感じられた

Docker って

  • 高レベルランタイムに位置づけされている
  • Kubernetes でもデフォルトのランタイムとして位置づけられている
  • 内部では containerd を利用している

containerd

github.com

上図中では度々, conteinerd と書いてしまっているけど, それは typo なのでごめんなさい.

低レベルランタイム

  • 名前は低レベルだけど, やってることは高レベル (色々と頑張ってくれている)
  • runc がその代表格, gVisor や Kata Containers が続く感じ

runc

  • Docker のデフォルトランタイム
  • 元 libcontainer
  • cgroups や Linux namespace 等を駆使して隔離環境を作成

gVisor

github.com

  • システムコールを gVisor が横取り
  • アプリケーションから見ると, 直接カーネルを操作しているように見せかける
  • 面白い技術だなあ

https://image.slidesharecdn.com/201805containersiggvisorpublic-180528133728/95/20gvisor-23-638.jpg?cb=1553082295

https://www.slideshare.net/uzy_exe/201805gvisorintroduciton より引用

以上

メモでした.

コンテナ間, コンテナ - ホスト間の隔離に対してどのようなアプローチをするか, 各ランタイムで特徴的な取り組みが垣間見れてとても面白い記事でした. gVisor ちょっと試してみたい.