
オープンソースの次世代「runc」。rootlessコンテナがSystemd、Docker、Kubernetesなどのワークロードを、VMと同様に実行できるようにします。
Sysbox は、オープンソースかつ無料のコンテナランタイム(特殊化された「runc」)です。元々はNestyboxによって開発され(2022年5月に[Dockerが買収][docker-acquisition])、以下の2つの重要な方法でコンテナを強化します:
コンテナ分離の強化:
すべてのコンテナでLinuxユーザー名前空間を使用(つまり、コンテナ内のrootユーザー はホスト上では特権を一切持ちません)。
コンテナ内のprocfsおよびsysfsの一部を仮想化。
コンテナ内でホスト情報を隠蔽。
コンテナの初期マウントをロックする、など。
コンテナがVMと同じワークロードを実行できるようにする:
Sysboxを使用すると、コンテナはsystemd、Docker、Kubernetes、K3s、buildx (マルチアーキテクチャビルドを含む)、レガシーアプリ、マルチアーキテクチャ アプリなどのシステムレベルのソフトウェアを、シームレスかつ安全に実行できます。
このソフトウェアは、変更を加えることなく、また特別なバージョンのソフトウェア (例:rootlessバリアント)を使用することなく、Sysboxコンテナ内で実行できます。
特権コンテナも、複雑なイメージも、厄介なエントリーポイントも、特別な ボリュームマウントも不要です。
これは**「コンテナスーパーチャージャー」**のようなものです。既存のコンテナマネージャー/ オーケストレーター(例:Docker、Kubernetesなど)が、強化された分離性を持ち、VMで実行される ほとんどすべてのワークロードを実行できるコンテナをデプロイできるようにします。
Sysboxは、高度なOS仮想化技術を使用して、コンテナを可能な限りVMのような環境に近づけること でこれを実現します。
KataやKubeVirtなどの代替ランタイムとは異なり、VMは使用しません。これにより(特にネストされた 仮想化を回避することでクラウド環境での)使用が容易になりますが、VMベースのランタイムが提供する レベルの分離性は提供されません。比較についてはこちらを 参照してください。
Sysboxを利用するために、新しいツールを学んだり、既存のコンテナイメージやワークフローを変更 したりする必要はありません。インストールして、コンテナマネージャー/オーケストレーターにそれを 指定するだけで、強化されたコンテナをデプロイできます。
Sysboxは、同じホスト上の他のコンテナランタイム(例:デフォルトのOCI runc、Kataなど)と共存 できます。ニーズに応じて、それぞれで実行するコンテナやポッドを簡単に選択できます。
Sysboxは無料かつオープンソースであり、Apache License Version 2.0の下でライセンスされています。詳細についてはLICENSEファイルを参照してください。
Sysboxは元々Nestyboxによって開発されました。[Nestyboxは現在Dockerの一部となっている][docker-acquisition]ため、DockerがSysboxプロジェクトの主要スポンサーです。
とはいえ、Sysboxはコミュニティのオープンソースプロジェクトであり、Dockerによる公式サポートは受けていません(つまり、DockerのサブスクリプションにはSysboxのサポートは含まれません)。サポートは、このGitHubリポジトリまたは[Sysbox Slackワークスペース][slack]を通じてベストエフォートで提供されます。
Sysboxの進化と改善に協力してくれるコミュニティからの参加を歓迎します。Sysboxが可能にするユースケースと利点を増やすことを目標としています。外部のメンテナーやコントリビューターも歓迎します。
Sysboxは以下のような問題を解決します:
コンテナ化されたマイクロサービスの分離性の強化 (コンテナ内のrootはホスト上の非特権ユーザーにマッピングされます)。
ホストのセキュリティを損なうことなく、コンテナ内で高機能なrootユーザーを 有効化。
安全でない特権コンテナやホストのDockerソケットマウントを使用せずに、 Docker-in-Docker(DinD)やKubernetes-in-Docker(KinD)を可能にすることで、 CI/CDパイプラインを保護。
「VMのような」環境としてコンテナを開発、ローカルテスト、学習などに使用できる ようにし、強力な分離性と、コンテナ内でsystemd、Docker、IDEなどを実行する 能力を提供。
コンテナ内でレガシーアプリを実行(効率の低いVMの代わりに)。
VMを、より簡単で、高速で、効率的で、移植性の高いコンテナベースの代替手段に 置き換え。クラウド環境全体に簡単にデプロイ可能。
ベアメタルホストを、VMの2倍の密度を持つ複数の分離されたコンピューティング環境 に分割(つまり、同じハードウェア上で同じパフォーマンスを維持しながら、VMの 2倍の数のVMのようなコンテナをデプロイ)。
高価なネストされた仮想化に頼ることなく、クラウドインスタンス(例:EC2、GCPなど) を複数の分離されたコンピューティング環境に分割。
SysboxはLinuxホスト(ベアメタル、VM、オンプレミス、クラウドなど)に簡単にインストールできます。主要なクラウドベースのIaaSおよびKubernetesサービス(例:EC2、GCP、GKE、EKS、AKS、Rancherなど)で動作します。
インストール後、Sysboxは裏方として動作します。DockerやKubernetesなどを使用して、Sysboxでコンテナをデプロイします。
例えば、以下の簡単なDockerコマンドでSysboxを使用したコンテナを作成できます:
$ docker run --runtime=sysbox-runc -it any_image
分離性に優れたコンテナが得られ、マイクロサービスだけでなく、通常VM上で実行されるシステムレベルのソフトウェア(例:systemd、Docker、Kubernetesなど)もシームレスに実行できます。
Sysboxの使用方法の詳細はこちら。
図のように、Sysboxは非特権コンテナがsystemd、Docker、Kubernetesなどのシステムレベルのワークロードをシームレスに実行できるようにしつつ、コンテナ分離、パフォーマンス、効率性、移植性のバランスの取れたアプローチを提供します。
そして、既存のインフラへの設定変更は最小限で済みます。Sysboxをインストールし、コンテナマネージャー/オーケストレーターを設定して、お好みのイメージを使用してコンテナを起動するだけです。
Sysboxは標準コンテナの分離性を強化し、多くのシナリオで安全でない特権コンテナの必要性をなくしますが、(まだ)VMベースの代替手段やgVisorのようなユーザースペースOSと同じレベルの分離性は提供していないことに注意してください。したがって、最高レベルの分離性が要求されるシナリオでは、KubeVirtなどの代替手段が好ましい場合があります(パフォーマンスと効率性の低下、複雑さとコストの増加を代償とします)。
詳細については、このブログ記事を参照してください。
Sysboxプロジェクトは、システムコンテナを使用して実験、発明、学習、システム構築をしたいと考えているすべての人を対象としています。最先端のOS仮想化であり、貢献を歓迎します。
2022年5月の[Dockerによる買収][docker-acquisition]以前、NestyboxはSysboxの拡張版(例:より高いセキュリティ、より多くのワークロード、公式サポート)として[Sysbox Enterprise][sysbox-ee-repo]を提供していました。
しかし買収後、Sysbox Enterpriseはスタンドアロン製品としては提供されなくなり、代わりにDocker Desktopに組み込まれました(Docker Hardened Desktopを参照)。
注記: Sysbox Enterpriseはスタンドアロン製品として提供されなくなったため、DockerはSysbox Enterpriseの一部の機能をSysbox Community Editionで利用可能にする予定です。機能は未定(TBD)であり、これに関するご意見・フィードバックを歓迎します。
以下の表は、Sysboxコンテナランタイムの主要機能をまとめたものです。また、Sysbox Community Edition(つまりこのリポジトリ)と、以前利用可能だったSysbox Enterprise Edition(現在は非推奨)との比較も示しています。
Sysboxの機能の詳細はこちら。
ご質問がある場合は、こちらからお問い合わせください。
Sysboxによってデプロイされるコンテナをシステムコンテナと呼びます。これは、(通常のコンテナのように)マイクロサービスだけでなく、Docker、Kubernetes、Systemd、内部コンテナなどのシステムソフトウェアも実行できるという事実を強調するためです。
システムコンテナの詳細はこちら。
Sysboxのホストは以下の要件を満たしている必要があります:
サポートされているLinuxディストリビューションのいずれかを実行しており、サポートされているアーキテクチャ(例:amd64、arm64)のマシンであること。
最低4 CPU(例:2コア、各2ハイパースレッド)と4GBのRAMを推奨します。これは必須 要件ではありませんが、これより小さい構成ではSysboxの動作が遅くなる可能性が あります。
インストール方法は、Sysboxがインストールされる環境によって異なります: