TenForward

技術ブログ。はてなダイアリーから移転しました

Container

af-graft を LXC コンテナで試してみた

Twitter でコンテナ用の面白い仕組みを見つけたので試してみました。中身ほぼゼロです。 コンテナの中で開いたsocketがhost stackに生えるという不思議socketです。論文はこちら https://t.co/YyP67mDPt2 実装はこちら https://t.co/IaKO5RFfkG— upa (@upaa)…

cgroup v2 の nsdelegate オプション(2)〜 cgroup namespace 作成後の cgroup root を権限委譲の境界として扱う

cgroup v2 の nsdelegate オプション第 2 弾です。 前回紹介したのは、cgroup namespace を作ると cgroup root を超えたプロセスの移動が禁止されるという機能でした。 これはユーザに関わらず関係するお話でしたが、今回は一般ユーザで namespace(つまりコ…

LXDでコンテナごとに異なるユーザ権限でコンテナを起動する

$ lxc version Client version: 3.0.1 Server version: 3.0.1 な環境の Ubuntu 18.04 上で試してます。 以下で何の前提もなく書いてるサブ ID のお話は、私の連載 第16回 Linuxカーネルのコンテナ機能 [6] ─ユーザ名前空間 に書いていますのでそちらをどうぞ…

cgroup v2 の nsdelegate オプション(1)〜 namespace 外へのプロセス移動の禁止

cgroup v2がカーネルに導入された時点では、cgroup v2にはマウントオプションはありませんでした。 しかし、4.13 で nsdelegate というオプションが導入されました。これは現時点でも cgroup v2 唯一のマウントオプションです。 このオプションは初期の name…

LXD コンテナに物理NICを直接与える

あまり役に立たないメモです。 コンテナホスト上でコンテナを起動する場合、ホスト上にブリッジを作成し、そこにアタッチする veth インターフェースを接続する場合が多いかと思います。 しかし、ベアメタル上に物理 NIC が多数あったり、SR-IOV で物理 NIC …

LXC 3.0 新機能の予習

ここ最近、新バージョンリリース時と、ドキュメント(man pages)に更新があったときに翻訳する以外、新しい機能について全く調査していませんでした。 なんとなく見てると LXC 3.0 が近いようですので、どう変わるのかをまとめてみます。 cgroup ドライバの…

pivot_root できる条件

ふとしたきっかけで man 2 pivot_root の制限に疑問を持ったので、雑にカーネルのコードを読んでみたエントリです。かなり雑にみただけなので間違いの指摘を歓迎します。というか指摘を受けるために書いたようなもの pivot_root の使われ方 コンテナを起動し…

ip netns コマンドが意外にきめ細やかにコンテナを作ってくれる

(2016-07-26: 誤記修正しました "setns -> nsenter")お手軽にシェルスクリプトなんかでコンテナを作る場合の強い味方といえば util-linux の unshare/nsenter コマンド iproute2 の ip netns コマンド が代表的でしょう。"ip netns" は Network Namespace 作…

Linux 4.3 の Process Number Controller (1)

連載書いたり、勉強会で発表したりしているとなかなかブログが更新できませんね。久々の更新です。これを書いている時点では Linux カーネルの 4.3-rc1 がリリースされていますが、久々に cgroup に新しいコントローラが追加されそうですね。 pids.txt 説明…

シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい (2)

これはだいぶ前に書いたエントリです。MINCS作者による最新の解説があるのでそちらもご覧ください。 (2016-11-21追記)先に書いた シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい (1) - TenForwardの日記 は私もびっくりの、このブログを書き始…

aufs を使った一般ユーザ権限で起動するコンテナ

LXC ではコンテナのクローンを行う際に色々なストレージバックエンドの特徴を生かしたスナップショットクローンを行えます。この辺りは 連載の第 19 回〜 22 回 辺りで詳しく解説しています。今まで、非特権LXCコンテナでストレージバックエンドの特徴を生か…

シェルスクリプトで書かれた軽量コンテナ MINCS がすばらしい (1)

これはだいぶ前に書いたエントリです。MINCS作者による最新の解説があるのでそちらもご覧ください。 (2016-11-21追記)コンテナは使いたいけど、たくさんコンテナを起動すると結局それぞれのコンテナに対するセキュリティアップデートなどのメンテナンスは必…

4.0.2 kernel と非特権コンテナ

(2015-06-11 追記) 以下の問題は 4.0.5 カーネルで解決しています。手元 (Plamo 5.3) では 4.0.2 カーネルで LXC の非特権コンテナを起動するとカーネルが固まります。その時のログは以下です (netconsole 経由で取ったので見にくい)。 https://gist.github.…

lxd を使ったライブマイグレーション (2)

このエントリの情報はおそらく古いです前のエントリ はネットワークの設定なしで行いましたが、そこに veth でホストと通信可能なネットワークの設定を行って試しました。一度で書けよって内容ですが :-pまず非特権コンテナで veth が使える設定を行います (…

lxd を使ったライブマイグレーション (1)

このエントリの情報はおそらく古いです先月、LXD 0.3 のリリースでライブマイグレーションサポート、というアナウンスがあったので早速試しましたが失敗しました (> lxd を使ったライブマイグレーション(未完) - TenForwardの日記)。これはバグがあったよう…

lxd を使ったライブマイグレーション(未完)

(2015-04-15 追記) マイグレーションできたブログエントリを書きました > lxd を使ったライブマイグレーション (1) - TenForwardの日記 (2015-03-18 追記) lxd 0.4 が出たので試してますが、今度はマイグレーション先の lxd がこんなログを吐いてしまいます …

10 分で試せる lxd 0.3

このエントリの情報は古いです(2015/04/08 追記) ubuntu-lxc の PPA の構成が変わっていますので、以下の add-apt-repository コマンドの例はそのまま実行できません。PPA の詳細は公式ページでご確認ください。 前回 (その1、その2) lxd を試したことを書い…

Google Chrome の Namespace 利用のメモ

(2016-05-16 Chromium の参考ページが移動していたので更新)過去に勉強会なんかで「Linux 版の Chrome は Namespace を使ってる」という話をしたことあるけど、そういえば確認したことはなかったので確認したメモ。参考はこの辺り。 Linux Sandboxing pidns …

LXD でリモートの LXD ホストのコンテナを操作してみる

LXD 0.1 がリリースされたのでLXD を試してみた続きです。LXD の特徴は複数の LXD ホストをリモートから管理できることです。というわけでリモートの LXD ホストの操作を試してみました。とりあえず動くのを確かめただけです。 テスト用の LXD ホストは Ubun…

LXD を試してみた

公式ページに簡単なクライアントプログラムの使い方が載りました (2015-02-27 更新) LXD 0.1 がリリースされましたので LXD を試してみました。こちらも参考に。ただし、現時点では以下とは少しコマンドが違うようです。 LXDを試してみた Plamo 5.3 で試して…

コンテナの歴史と Linux カーネルのコンテナ関連機能についての割とどうでも良い愚痴

この記事は Linux Advent Calendar 2014 の 18 日目のエントリとして書いています。Docker が盛り上がって、Docker が使ってる「コンテナ」という技術が盛り上がって、Doker の解説がそこら中にあふれるようになったので「Docker? そんなの FreeBSD が jail …

docker の CPU 隔離性

某所で話題になってたので。3.17.1 kernel で試してます (Plamo Linux 5.2)docker でも何でもなくて単に Linux kernel の cgroup がちゃんと動いてるかって話なんですが。:-)(2014-10-29 追記) なんか docker ってキーワード入ってるからかわかりませんが、…

lxc-checkpoint で CRIU を使って LXC コンテナの checkpoint/restore 処理

CRIUを最後に試したのは昨年11月でした。 CRIU (3) - TenForwardの日記 CRIU (2) - TenForwardの日記 CRIU (1) - TenForwardの日記 いつの間にやらバージョンも 1.3 とかで進化しています。でも LXC できちんと動かないよという話だったので動向だけ見守って…

cgroup の devices サブシステムのどうでも良いトリヴィア

lxc-checkpoint が動かないのでデバッグしたり、パッチ書いたり、リジェクトされたりしてる時に気づいたどうでも良い知識。cgroup の devices サブシステムは デバイスタイプ デバイスノード番号 アクセス権 をスペース区切りした文字列を devices.allow, de…

Linux 3.16 から試せる cgroup の単一階層構造 (2)

前回の続きです。 グループで使えるサブシステム "cgroup.subtree_control" ファイルにサブシステムを指定することで子グループで使えるサブシステムが指定できることを前回説明しました。これに対して、あるグループで使えるコントローラを一覧できる "cgro…

Linux 3.16 から試せる cgroup の単一階層構造 (1)

Linux 3.16 からカーネルソースツリーの Documentation/cgroups の下に一つ文書が増えているのに気づいた方もいらっしゃるのではないでしょうか。cgroupの使い方が大幅に変わる変更がマージされています。増えた文書は以下。 Documentation/cgroups/unified-…

setns を UTS Namespace をネタにおっかける

Linux:実行中プロセスの名前空間切り替え - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ masami256 さんのコンテナシリーズ、勉強になりますね。Linux カーネルの Namespace (名前空間) を扱うシステムコールのうち、既存のプロセスの Namespace を制御する …

UTS Namespace (名前空間) を追っかける

コンテナが盛り上がってるので、エラい人たちが結構色々な情報を色々な所に書いてくれるので、簡単に知識が手に入るようになってきましたね。というわけで、私のようななんちゃってな人でも気軽に処理を追っかけることができるようになってきましたから、久…

第 24 回山陰 ITPro 勉強会に参加しました

7/26(土) に第 24 回山陰 ITPro 勉強会 でコンテナについてお話したあと、色々勉強してきました。当日の私の資料は一部変更して speakerdeck に置いてあります。 Linuxコンテナを支える技術とLXC、Dockerのキホン (2014-07-26) // Speaker Deck ツイートのま…

Namespace Cgroup

全く役に立たないエントリ。こんな Cgroup 使わないように。とりあえず折角調べたので忘れないようメモ。昔々、ns cgroup なるものがありました。正式名称は "Namespace Cgroup" どうやら namespace と cgroup を連携させるものだったようで。しかし、2.6.37…