Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「あれ、コンテナって何だっけ?」から生まれた Rust で書かれた コンテナランタイム youkiの話@ODC2021

「あれ、コンテナって何だっけ?」から生まれた Rust で書かれた コンテナランタイム youkiの話@ODC2021

https://event.ospn.jp/odc2021-online/session/405951

今やエンジニアにとって必須の技術となっているコンテナ。何気なく使っているコンテナですが、コンテナって実際はどうやって動いているのでしょう?namespace?cgroup? そんな疑問から私はコンテナランタイムを学び始めました。そして出来上がったのがRustで書かれたコンテナランタイムのyoukiでした。

youkiは今ではコンテナランタイムとしての基本的な機能は一通り備え、rootlessやcgroup v2対応なども行われています。また、僕以外にもアクティブな開発者を数人抱え、podmanなどを開発しているオーガナイゼーションのcontainersでファーストリリースに向けて開発が続けられています。

本セッションではまず、コンテナランタイムの基礎技術の紹介から実際に簡単なコンテナランタイム作成を行います。また、youkiの紹介と小さな自作コンテナランタイムだったyoukiの成長過程とこれからについて紹介します。
https://github.com/containers/youki

うたもく

August 27, 2021
Tweet

More Decks by うたもく

Other Decks in Technology

Transcript

  1. 知ってもらいたいこと
 コンテナを支える技術 
 • 周辺技術 
 • 実際にコンテナを作ってみる 
 


    youkiのこれまでとこれから
 • Rustとコンテナランタイム
 • youkiの特徴
 • 単なる勉強用の自作コンテナランタイムだったyoukiに他の 開発者が参戦するまでの経緯
 
 5
  2. 使うもの
 • Linux環境を準備してください
 ◦ すぐに用意できない方向けにgitpodを用意しました
 ◦ gitpod…
 ▪ ブラウザで使えるオンラインIDE
 ▪

    ブラウザでLinuxのコマンドが使えます
 ◦ リポジトリのREADMEにgitpodのリンクがあります
 • デモのコマンドがあるリポジトリ
 ◦ https://github.com/utam0k/container-demo
 8
  3. namespace
 • 色々な種類のnamespaceがある
 ◦ PID namespace
 ▪ プロセス群の隔離
 ◦ Mount

    namespace
 ▪ マウントポイントリストの隔離
 ◦ UTS namespace
 ▪ ホスト名などの隔離
 • いまだに色々な種類のnamespaceが増殖中
 12
  4. /sys/fs/cgroup
 CPU
 Memory
 Devices
 P P P P P P

    P P P P 継 承
 ディレクトリで階 層を表現
 14
  5. Kubelet(K8s)
 Linuxなど
 High-Level Runtime
 CRI − Container Runtime Interface
 OCI

    − Open Container Initiative
 CRI
 Low-Level Runtime
 OCI
 19
  6. コンテナ編まとめ
 • コンテナを支える技術
 ◦ chrootpace - ルートディレクトリを変更
 ◦ namespace -

    操作可能なリソースの隔離
 ◦ cgroup ace - 使用可能なリソースの設定
 
 • コンテナ界隈を支える仕様
 ◦ CRI - Container Runtime Interface
 ◦ OCI - Open Container Initiative
 26
  7. 知ってもらいたいこと
 コンテナを支える技術 
 • 周辺技術 
 • 実際にコンテナを作ってみる 
 


    youkiのこれまでとこれから
 • Rustとコンテナランタイム
 • youkiの特徴
 • 単なる自作コンテナだったyoukiに他の開発者が参戦する までの経緯
 
 29
  8. • 英語で発信できた
 • Redditでほとんど全てのコメントに返信していた
 • 動くものというインパクト
 ◦ わかりやすいgifや画像が用意できる
 • Rust


    ◦ ちょうどLinuxの話もあったりこのレイヤではホットだった
 • 完全なものではなかった
 ◦ good first issueをいくつか用意していた
 • 運がよかった
 今思うとなぜ注目を集めれたか?
 45
  9. • コントリビュータの人へ何かできないか...
 ◦ 貢献先 → うたもくのリポジトリ
 ▪ よくわからないうたもく個人リポジトリへの貢献
 ◦ 貢献先

    → containersのリポジトリ
 ▪ githubのプロフィールにもちょっと豪華に掲載される
 • コンテナ関係の開発経験がある組織の意見が欲しかった
 containersでの開発に移行
 49
  10. 現在のyouki
 • 普通に動く、ドキュメントやコメントもそれなり
 • コラボレータが6人
 ◦ うたもくはコミット数1位から陥落
 • github.comからそれなりの数の人が毎日見てくれている
 •

    rootlessやcgroup v2などそれなりに新しい機能にも追従
 • まだファーストリリースはされていない
 • コンテナランタイム好きの人にはそれなりに認知されてきた
 50
  11. これからのyouki
 • リリースする!
 • コンテナ界隈に必要なライブラリを増やしていく
 • 他がやっていない独自の機能を研究 & 開発していく
 ◦

    汎用的なコンテナランタイム用のテストツール
 ◦ io_uringを用いた非同期処理
 • ベンチマークの計測
 • 楽しく遊んでいく
 51