Cloud Penguins

Flying penguins in the cloud.

「イラストでわかるDockerとKubernetes」は完全に良書

すごいタイミングですごい本が出たもんだ。

本日はKubernetes Advent Calendar 2020 その1 向けのエントリー。

本当はCF for k8sの記事を書くつもりだったのだけど、先週盛り上がりまくったDockershimのDeprecated話の後ですごーく良い本が出てきたので、これは紹介せねばということで急遽内容を変更。

jaco.udcp.info

CF for k8sの話も途中まで書いちゃっているのでまた日を改めて公開する。

あの神資料が本になったよ

ということで今日の話題はこちら。

今ではDockerやKubernetesに関する本もだいぶ出揃い、使い方を学ぶのには困らなくなってきた。それに、基本的な使い方だけであれば書籍で体系的に学ばなくとも、ネット上に転がっているサンプルをそのままコピペするだけで難なく動かせてしまう。

10年前であればセットアップだけで数日かかっていたような複雑なソフトウェアでさえ、 docker-compose up するだけで動かせてしまう。これはDockerを学び始めた人の誰もが体感するところだろう。

これ自体はとても良いことなのだけど、言い方を変えると仕組みを理解しないまま使い続けられてしまう。例えば先ほどの『Docker非推奨問題』で不必要に慌ててしまったり、環境をKubernetesへステップアップさせていく際の支障となったり。こういった『何らしかの躓きポイント』は、出来る限り早めに取り除いておきたい。

ぜんぜんわからない 俺たちは雰囲気でDockerをやっている

しかし毎日車に乗っている人が必ずしも車の仕組みに詳しくないのと同様に、毎日 dockerkubectl を叩いていても、なかなか仕組みには詳しくならない。仕組みを理解していくには、世の中の膨大な資料を自分で調べたり、あるいは Kubernetes The Hard Way のようにステップバイステップで触っていくなどの努力が必要だ。

この分野で食っていく人にはそうして欲しいのだけど、Dockerを触る全ての人がそうすべきだとは思わない。もっと素早く、体系的に学べる資料があったほうが良いだろう。

ということで、これまではNTTの徳永さんの、この神資料を紹介していた。

www.slideshare.net

で、今回。この神資料が本になったのだ!

これでSlideShareを社内ネットワークから接続拒否しているようなエンタープライズ企業の人にも勧められる!

仕組みを理解するのに簡潔かつ明快な章立て

徳永さんによって書かれた本書。目次は以下のようになっている。

(目次)
第1章 コンテナ技術の概要
1-1 コンテナを見てみよう
1-2 コンテナ技術の基本的な特徴
1-3 本書で注目するDockerとKubernetes
第2章 Dockerの概要
2-1 DockerによるBuild、Ship、Run
2-2 コンテナのレイヤ構造
2-3 DockerのアーキテクチャとOCIランタイム
2-4 まとめ
第3章 Kubernetesの概要
3-1 Kubernetesの特徴
3-2 Kubernetesクラスタとkubectl
3-3 Kubernetesにおける基本的なデプロイ単位
3-4 KubernetesにおけるPod群のデプロイにまつわるリソース
3-5 設定項目やボリュームに関するリソース
3-6 Kubernetesにおけるサービスディスカバリ
3-7 KubernetesのPodとCRIコンテナランタイム
3-8 まとめ
第4章 コンテナランタイムとコンテナの標準仕様の概要
4-1 コンテナランタイムと2つのレイヤ
4-2 いろいろな高レベルランタイム
4-3 いろいろな低レベルランタイム
4-4 OCIの標準仕様
4-5 runcを用いたコンテナ実行
4-6 実行環境作成に用いられる要素技術

目次を見るだけで気づくかもしれないが、例の問題はこの本を読めば完全に理解できる

対象となる読者はコンテナ入門者。ただしDockerを学びたい人が1冊目に読む本ではない。他の本やWebの資料を基に基本的な使い方を理解した人が、二冊目として本書を利用して仕組みの理解を深めるとよさそうだ。

仕組みの説明をするとどうしても分量が多くなってしまうものだが、本書は目次や索引含めて148ページしかない。2時間程度でさっくり読めてしまうだろう。そういった意味でも、二冊目として最適なものだと言える

図が多くて分かりやすい

前回の自分の記事の対するコメントでもいくつか頂いたのだが、やはり仕組みの説明には図を使うのが分かりやすい。

前述の徳永さんの資料も図解が素晴らしかったのだが、本書は図+文章でより理解しやすくなっている。 f:id:jaco-m:20201208211454j:plain

特にコンテナランタイムの図解は必見。コンテナランタイムは高レベルランタイムと低レベルランタイムで役割が異なるのだが、学び初めはどうしても混同しやすい。図を頭に入れて置くことで、スッキリ理解しながら読み進めることができるだろう。

プログラミングの学習では、書籍をそのまま丸写ししていく写経が良いと言われるが、本書の図を手書きして自分の言葉で説明ができるよう、模写していくのもありかもしれない。

f:id:jaco-m:20201208213010j:plain ちなみにこちらは自分が先日の記事を書く前に、とある人に説明する際に描いた絵

やっぱり難しいKubernetes部分

若干気になったのはKubernetesに関する図解。Kubernetes自体の規模が大きく複雑なのもあるからか、やや抽象化されすぎて分かりづらいものもあった。また、Kubernetesの7角形に拘った表現が多かったが、紙面ならばもうちょっと表現の工夫が出来たのではないかなと思うところがあった。

ただそれでも、相当分かりやすい部類の説明であることには変わりないので、是非読んでみて欲しい。

Kubernetesの部分を特に掘り下げて理解していきたい場合は、Kubernetes完全ガイドにステップアップしていくのが良いだろう。この本も図解が非常に豊富で、Kubernetesを学ぶのには最強の本だ。

ということで

「イラストでわかるDockerとKubernetes」、本当におすすめです。