blog.8-p.info

firecracker-containerd は、VMM の Firecracker を Docker などでも使われているコンテナ実行環境の containerd から使うためのソフトウェアだ。具体的には、Firecracker 上で Linux を立ち上げてから、その Linux の中でさらにコンテナを実行する、という動作をする。

私は2019年の7月から AWS で働いていて、firecracker-containerd の開発にも関わっている。Amazon で働くこと自体はもう7年になるけれど、オープンソースソフトウェアの開発が主な仕事になるのは今回が初めてだ。せっかくなので、これから数回に分けて firecracker-containerd の実装について説明したい。

Firecracker とは

といっても「Firecracker なら手元の Linux にインストールして毎日使っています!」という人も少ないだろうから、まずは Firecracker そのものについて説明する。Firecracker は、Linux の KVM という仕組みを通して VM (Virtual Machine) を立ち上げる、VMM (Virtual Machine Monitor) とか Hypervisor と呼ばれる種類のソフトウェアだ。

KVM は、Intel なら Intel VT-x (2005), AMD なら AMD-V (2006) といった、最近の CPU に存在する仮想化がらみの命令を、/dev/kvm というデバイスと、それに対する ioctl といったかたちに抽象化している。

KVM や Firecracker の文脈での “VM” というのは、V8 や YARV のような「ホストの CPU とは関係のない、仮想的な命令セットを実装した、CPU を催したソフトウェア」のことではない。x86 なら x86 の、ホスト側のマシンと同じ命令セットをもった仮想的なマシンのことを指す。

仮想的なマシンが立ち上がっているので、そこで Linux を動かすにしても、Linux カーネルはホストと全く別のものが動かせるし、そもそも別の OS を立ち上げることもできる。

firecracker-containerd では、前述の通り、Firecracker 上で Linux を立ち上げているけど、Firecracker 自体は (理論上は) 任意の OS を起動できるし、ユニカーネルの一つである OSv を実際に実行することもできるらしい。

containerd とは

containerd は Docker などでも使われているコンテナ実行環境で、名前の通り、デーモンとして立ち上がり、リクエストをうけとって、コンテナを立ち上げる。containerd には、runtime と呼ばれる、実際にコンテナを立ち上げる部分を差し替え可能にする仕組みがある。firecracker-containerd では、これを使って

  1. コンテナの前にまず Firecracker を立ち上げて
  2. Firecracker は Linux を立ち上げて
  3. その Linux の中で、Firecracker の外からのコマンドを受け取るデーモンを立ち上げて
  4. containerd に送られたリクエストを Firecracker の中のデーモンに送ることで、コンテナを立ち上げて
  5. その結果を、必要であれば変換して、containerd 側に返す

という動作を実装している。

以前はこれに加えて snapshotter と呼ばれる、Docker における graphdriver に対応するものの、Firecracker 向けに都合の良い実装も2つレポジトリに存在していた。ただ、このうち Linux の Device Mapper を使うものが、無事に containerd 本体に取り込まれたので、これらは firecracker-containerd 側からは削除された。

まとめ

firecracker-containerd を読む前準備として、Firecracker と containerd の役割と、全体の動作の流れについて説明しました。続きます。

Clay Johnson “The Information Diet” を読んだ。著者はオバマ大統領の当選にも力をかした、選挙キャンペーンをテクノロジーで支援する会社 Blue State Digital の創業メンバーの一人として有名らしい。

タイトルの diet は、和製英語の「やせる」という意味のダイエットではなく、より広い意味の 「食事」のことで、著者はそのアナロジーでもって、あるべき情報のとりかたを議論している。

たとえば

  • 自分の信じていることを追認するような情報ばかりでなく、バランス良く情報をとること。
  • 加工食品をさけるように、生に近い情報を取ること。
  • 地産地消するように、自分の地域の情報を、全国レベルの情報より重視すること。

RescueTime いいよ、みたいなハウツーも少しあるけれど、全体としてはエッセイとしての性格のほうが強い。

食事のアナロジーのせいよりは、著者の出自によるものが大きいのだろうけど、例えば “Digital Minimalism” や “Make Time” に比べると「情報はきちんと取捨選択して、咀嚼して、市民として行動するべきだ」という意識というか期待があって、そこはちょっと眩しい。最後に “A Special Note: Dear Programmer” なんて章まであって、目をそらせきれない感じがある。

シグナルの話 への返信です。

ノイズから離れる

シグナルとノイズのうち、ノイズから離れる、というのはわかりやすい。このテレビ番組はくだらないから見ない。この本は面白くないから読むのをやめる。今回の飲み会はまたグチと噂話でおわりそうだから、理由をつけて断ろう。こういうことは誰しもがしている。

ソーシャルメディアをノイズ、と言い切るのはちょっとためらいがあるけれど、それ以前の、例えばブログにくらべたりすると、書きやすいメディアになっているとは思う。Twitter の場合は「つぶやき」という理由づけと、文字数の少なさ、Facebook の場合は、そもそも世界中から読まれたりしませんよ、という制限でもって、それは意図的に設計されている。

ただ、書きやすさは、間違えやすさでもある。

間違えやすいことは悪いことではない。世の中全体は、素早く間違えて、素早く直す方向に進んでいる。ソーシャルメディアの外でも、例えば Scrapbox のような明示的な「投稿」のない Wiki なんかは、未完成でも共有することに価値がある、という考えがベースにあると思う。

ただ、世界中が高速に間違え続けるなかで、自分が何を直すことに加わるのか、というのには意識的になったほうがいいと思う。

シグナルから離れる

シグナルから離れる、というのはわかりにくい。

自分の中でもまとまりきれていないのだけど、

  • 時間の使いかたとして、何かを書いたり作ったりする時間や、部屋を片付けたり洗濯物を畳んだりといった時間、あるいは相続や保険を見直したりするような時間を、もうちょっと増やしたほうがいいのではないか。
  • 最良の情報を探そうとする行為が、むしろ実際に行動を起こすところから自分を遠ざけていないか。
  • 考える時間や、休憩する時間をもうちょっととったほうが良いんじゃないか。10冊の本それぞれについて2時間考えるのと、20冊の本についてそれぞれ1時間考えるのでは、前者の方が良いのではないか。5冊について4時間考えるのはどうか。
  • そもそも、他人の考えに影響されすぎではないか。問題設定を他人に委ねていないか。

みたいな問題意識がないまぜになっていると思う。

参考になる本など

Cal Newport “Digital Minimalism: Choosing a Focused Life in a Noisy World” (2019) は、歴史などもよく調べられているノンフィクションで面白い。もうちょっと軽くて実用よりのものだと Jake Knapp, John Zeratsky の “Make Time: How to Focus on What Matters Every Day” (2018) も良かった。

どちらも『デジタルミニマリスト』『時間術大全』というタイトルで、2019年に邦訳が出ています。

最近は、近所の図書館でみかけた Clay Johnson “The Information Diet: A Case for Conscious Consumption” (2011) を読んでいる。

無関心

結果として無関心のすすめになっているので、そこに居心地の悪さは感じる。

民主主義国家の国民として、ある程度はニュースに関心を払うべきじゃないかとか、一応の専門家として、何かいうべきことがあるんじゃないか、という気持ちはある。

一方で、Twitter で怒ってリツイートしたり、Facebook のプロフィール画像をワンクリックで何かに変えてみたりすることに、何か意味があるのかなあ、というと、社会に対する参加のしかたとして、もうちょっと何かあるだろうとも思う。

これについては答えは出ていない。

孤独

あんまり昔のものばっかり参照するのはどうかと思うんだけど、昔に brazil さんが書いていた

僕も、前提として、まず独りの時間というものがきちんとあるべきだと思う。

とか、吉本隆明の『ひきこもれ―ひとりの時間をもつということ』(2002) とかも思い出したりもした。この本は、アンカテの紹介を読んで買った記憶がある。

ベスト オブ 2019

Dec 4, 2019

三回忌をして、子供が生まれて、また仕事のチームを変えた一年だった。

“Deep Work” の Cal Newport の新刊。ライフスタイルとしてのミニマリズムと同様に、スマートフォンやソーシャルメディアといった、デジタルなテクノロジーについても、自分の価値観にあった少数のものに、厳選・最適化したほうが良いよ、というのが著者の主張。

一人で時間を過ごすことの価値と、その不足、みたいなところを論じるときに、同じテーマをあつかった “Lead Yourself First” (2017) をひきながら

As Kethledge and Erwin explain, however, solitude is about what’s happening in your brain, not the environment around you. Accordingly, they define it to be subjective state in which your mind is free from input from other minds.

こう定義しているのは、私にはちょっとドキッとさせられるものがあった。この定義通りに、本当に一人で、本もポッドキャストもなしに、他人の考えから離れて時間を過ごすことって、最近していたっけ?

そういったわけで、以前から時折休憩していた Facebook と Twitter に加えて、RSS リーダーからポッドキャストまで、いろいろと読んだり聴いたりするものを減らしてみている。

インターネットとの距離感の見直しみたいなものは、私は定期的にやっていたんだけど、

いままでは、シグナル/ノイズ比の改善というか、「悪い」情報を減らして「良い」情報を増やそう、という意識があった。最近は、そもそも良い情報も程々でいいかな、というところに意識が変わりつつある。

音楽

京都のマスロックバンド tricot の、メジャーレーベル移籍後の一曲。

tricot が出ている Audiotree Live シリーズ から発見したものだと、台湾の Elephant Gym も良かった。シアトルに来ていたのに観れなかったのは残念。

インターネット

Scrapbox は一時期 hub に書きこんだり、ほかにも個人のものを色々と読んだりしていた。面白いのだけど、冒頭の「他人の考えから離れる」という意識もあって、最近はひかえている。

Scrapbox は、キーワードをいちいちカッコで囲んで、出力を完全にコントロールできる感じとかが、ブラックボックスのアルゴリズムで色々を「おすすめ」される2019年にみると、ちょっと異様な感じがしていて、いにしえの 簡単で馬鹿な仕組みを、馬鹿だなあと思って使う 時代を思い出す。

明日は

これは、2019 Advent Calendar 2019 の4日目の記事でした。昨日は necomimii さんの「2019年をなんとなく振り返るけど大体よかったしこれからもいいと思う」、明日は shikakun さんです。

そういえば、この前の帰省のときには、子供たちの体調が悪くなってしまい、小児科につれていく、という一面があった。

小児科に電話をかけると「予防接種はうけていますか?」「あ、えーと、アメリカに住んでいるので、アメリカのやつはうけているんですが…」という回答しかできず、ちょっと困った。幸いにも妻がワシントン州の Lifetime Immunization Record を携行してくれていたので、それをその場で翻訳して、問診票に記入することで事なきをえた。

ワクチンの名前の翻訳には、名鉄病院のアメリカの定期予防接種スケジュール 〔2012〕を使った。A4 で1ページの簡潔な PDF だけど「2種混合って何と何だっけ?」みたいなところにちゃんと説明があり、わかりやすい。