ここ最近、新バージョンリリース時と、ドキュメント(man pages)に更新があったときに翻訳する以外、新しい機能について全く調査していませんでした。
なんとなく見てると LXC 3.0 が近いようですので、どう変わるのかをまとめてみます。
cgroup ドライバの整理
これまで LXC には cgroup 関連のドライバが 3 つ含まれていました。
- cgfs
- cgmanager
- cgfsng
cgfs ドライバはもっとも古くからあるドライバです。今や cgroup は /sys/fs/cgroup
にマウントされますが、昔は特にマウントする場所は決まっておらず、/dev/cgroup
にマウントしたり、/cgroup
にマウントしたりしていました。どこにマウントされるかわからないファイルシステムを検出するロジックなど、今や不要になったロジックが多く含まれています。
cgfs ドライバの機能は cgfsng でカバーされていますので、cgfs ドライバは削除されるようです。
cgmanager ドライバは Ubuntu 14.04 のあたりに導入された cgmanager を使って cgroup を管理するためのドライバでした。カーネルに cgroup namespace が導入された今となっては、cgmanager は不要で、すでに廃止予定のプロジェクトになっていますので、cgmanager ドライバも廃止されます。
テンプレートの整理
LXC 2.x までは、様々なディストリビューション用のコンテナイメージを作成するために、シェルスクリプトで書かれたテンプレートが各ディストリビューションごとに用意されていました。
LXC 3.0 では、ディストリビューション依存のテンプレートが削除されるようです。ただ、バサッと切り捨てるのではなく、lxc-templatesというプロジェクトに分離されました。
LXC プロジェクト配下には、新たに distrobuilder という、イメージを作成するための Go 言語によるツールの開発が始まっています。
distrobuilder
distrobuilder は、
- 最近は、ディストリビューションがクラウド用にイメージを準備していることが多いので、それを取得して LXC/LXD 用のイメージを作成する
- 各ディストリビューションが採用しているパッケージ管理コマンドを使って、従来のように LXC/LXD 用のイメージを作成する
という機能を持っているようです。
現時点では、各ディストリビューションが準備している
- alpine イメージ(alpine-minirootfs-*.tar.gz)
- arch イメージ(archlinux-bootstrap-*-x86_64.tar.gz)
- CentOS イメージ(iso イメージ?)
- Ubuntu イメージ(ubuntu-base--base-.tar.gz)
を使用してイメージを作成する機能と、
- debootstrap
を使用してイメージを作成する機能があるようです。
各種言語バインディングの分離
LXC のソースアーカイブに含まれていた、
は独立したリポジトリに分離されるようです。
pam_cgfs の LXC への移動
ユーザログイン時に、ユーザ用の cgroup を作成するための pam モジュールとして pam_cgfs
が LXCFS で開発されていましたが、LXC 3.0 からは LXC ツリー配下で開発されるようです。
cgroup v2 サポート
cgroup v2 がサポートされたようです。
他にもあるでしょうけど、とりあえずこのあたりで。
参考
- LXC Lands Unified cgroup Hierarchy Support
- On The Way To LXC 3.0: Removal of cgmanager And cgfs cgroup Drivers
- On The Way To LXC 3.0: Splitting Out Templates And Language Bindings
- On The Way To LXC 3.0: Moving The Cgroup Pam Module Into The LXC Tree (Including A Detour About Fully Unprivileged Containers)