TenForward

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

技術書典 17 でコンテナ本第 1 巻の改訂版を出します

技術書典13で、初めて "Linux Container Book"(コンテナ本)の第 1 巻を出して以来、毎回新刊を出してきました。

そして、5 回目の技術書典17では、このとき出した第 1 巻の改訂版(第 2 版)を出します。80 ページに届かないくらいだった初版に比べると、大幅ページ数アップで 120 ページに届かない程度になっています。

techbookfest.org

初版でも、これぞ Linux におけるコンテナの中心となる機能である Namespace と、コンテナの Network 機能を紹介しました。これに加えて、

  • User Namespaceを使って非特権コンテナを起動する際に重要な機能である "ID mapped マウント"
  • 現時点で最新の Namespace である Time Namespace

を新たな章として追加しました。Time Namespace については、この本のための書き下ろしです。

ほかにも、既存の説明を大きく充実させています。

  • Namespace 操作に使うシステムコール
  • システムコンテナとアプリケーションコンテナ
  • NSFS(/proc/[PID]/ns以下)の pid_for_childrentime_for_children ファイルの説明
  • PID Namespace の pid_for_children の説明

を追加しています。これらの説明の充実分もほぼ書き下ろしとなります。

正誤表

場所 備考 修正
P.48,49 実行例でディレクトリーを作成する手順が抜けていたので追加しています (/mnt_priv/ 以下のa,b,c,dをmkdirする処理) v1.0.4
P.76 マウントAPIが刷新された部分の記載があいまいでしたので少し詳細に書き直しています v1.0.4
P.90 /home/tenforward/mnt: /home/u1001/mnt: ページ最下部の実行例部分のコマンド出力結果 v1.0.4
P.93 systemd-homed で作成したユーザーが ssh 経由で公開鍵認証でログインするにはまだ少し工夫が必要なようです (削除) v256以降のsystemdで対応しているので脚注を削除 v1.0.4
P.98 uptimeコマンドを結果は uptimeコマンドの結果は v1.0.4

その他、誤りではないのですが、セクション 10.2 の記載があいまいな記載になっていたのを書き直しました。10.2 は結構変わっています。

今回のv1.0.4の変更にあたり、Yu Watanabeさまには誤記の指摘、記述の整合性についてやあいまいな部分への助言をいただきました。また、systemdに関する最新情報もいただきました。おかげで、誤りを修正し、内容をより明確にすることができました。この場を借りて感謝申し上げます。

初版を買った人は第 2 版を買うべきか?

私のお小遣いが増えますので買ってください。というのは置いといて…

基本的には、初版で現時点で Docker や Kubernetes で使われているコンテナの主要機能についてはカバーできているので、そういう視点で Linux カーネルのコンテナ機能を学びたい人は、第 2 版を買わなくても知識のカバーはできているはずです。

ID mapped マウント

そして、新たに章として追加した ID mapped マウントについては、連載記事で紹介しています。比較的最近の機能ですので、記事の情報が古いということもありません。

gihyo.jp

gihyo.jp

この記事と今回の第 2 版で異なる点は、ID mapped マウントで使っているコマンドです。記事では、ID mapped マウントの実装を主に担当したChristian Brauner氏の実装であるmount-idmappedを使っていました。第 2 版では、Linux で通常ファイルシステムをマウントするときに使う mount コマンドを使っています。

この mount コマンドについても、ブログで紹介しています。

tenforward.hatenablog.com

つまり、ID mapped マウントについては、本を買わなくても情報はゲットできます。情報を一冊の本でまとめて学びたいケース以外は、新たに買い直さなくても大丈夫です。

Time Namespace

Time Namespace は完全に書き下ろしですので、Time Namespace について知りたい場合は本を買ってください。もちろん、lwn.net とか色々な情報を集めれば学習できますが。特に udzura さんのこの記事は、第 2 版で新たに追加した情報とほぼ同等の内容になっています(私も執筆の際にはかなり参考にしています)。

udzura.hatenablog.jp

Namespace 操作に使うシステムコール

clone(2)unshare(2)setns(2)の説明をしているだけですので、man ページをご覧になれば理解できるはずです。

それに、第 2 版で追加した内容も大した内容ではないので、ここを特に知りたいと思った方は、わざわざ買い直す必要はありません。

NSFS

第 2 版で追加した内容は次のブログを参考にしています。こちらをご覧になって十分理解した人は買い直す必要はないでしょう。

tenforward.hatenablog.com

まとめ

内容だけを見ると、第 2 版を買い直さなくてもわかりやすい情報はありますので、あまり買い直す必要性はないかと思います。

買い直すと良いのは次のような人でしょうか。

  • 情報が 1 ヶ所にまとまっている書籍を使って勉強したい
  • シリーズ物はコンプリートしたい

コンテナ本第1巻第2版をよろしくです(笑)。