「Docker/Kubernetes 実践コンテナ開発入門」はDockerを本番で使うスキルを最短で習得できる書籍

248件のシェア(すこし話題の記事)

ども、大瀧です。

8/25日に技術評論社から発売されたDocker/Kubernetes 実践コンテナ開発入門を読む機会 *1がありましたので、ご紹介します。

著者は@stormcat24さんです。

アジェンダは本人ブログにとてもナイスなものが既に公開されているので、そちらをご覧いただくのが良いと思います(面倒臭がっているわけでは無いですw

まずは単著にもかかわらず、コンテンツの幅広さと濃い内容に圧倒されます。「Dockerを本番で使う」というコンセプトの元、入門から構築、運用に至るまで様々な切り口での技術解説が続きます。この手のアラカルト的な書籍にありがちな"何人かの共著で、章によってレベル感や文章力のギャップが辛かったりしない?"といった心配は無用です。それどころか、書き味がエンジニア然とした、とても論理的に積み上げられたストーリーになっていて、一歩ずつ理解しながら読み進めていく感覚が得られるのは最近のIT技術書では珍しいと思います。それだけでも他のDocker本と比べてオススメですw

特に、DockerとKubernetes(以下k8s)との関係性の紹介から、k8sを理解するための周到な章立て *2が秀逸で、普通の技術書だとDockerをなんとか勉強して疲れているところにさらに複雑なk8sが出てきて読者がノックアウト、ということになりがちな部分を

  1. 何故クラスタリングが必要なのか?
  2. 手軽に試せるDockerクラスタ機能(Swarm)で触りながら試してみようよ。
  3. じゃあ、同じ構成をKubernetesでやると、こう。

という流れでハンズオンをベースにステップアップしながらk8sに進んで行く、という構成は素晴らしいと思います *3

一方で、それぞれのコマンドや機能についての網羅的な紹介ではないので、リファレンス用途にはあまり向きません。Docker/Kubernetesともにドキュメントが非常に充実しているので、新しい内容が出てきたらドキュメントに目を通す余裕があると知識の横幅も広げていけるのかなと思います。

あと、コラムではイマドキなキーワードを補完するような位置づけになっていて、関連キーワードをWebで検索する良い入口になっているとも思います(Alpine Linuxはじめ、ときおり熱のこもったコラムが混じるのも好みですw)。

Kubernetesについて

後半のHelm以外はKubernetes周りの解説にそこまで目新しいものは見当たりませんが、前述のストーリーがしっかりしているところがあるので、「他の解説本が難しくて挫折した」なんていう方は完読しやすいのかなと思います。

自分は業務でk8sを評価中の段階で、オライリーのKubernetes入門を読んでいたので、角度の違う解説や取り上げている内容の差異から上手く相互補完ができたかなと思っています。

運用周りについて

Dockerコンテナの運用について詳しく書かれている書籍はとても希少であり、経験に基づいた実践的な内容だと思います。ログ周りの設計の考え方からDockerイメージのシェイプアップ戦略、セキュリティの考慮事項まで網羅的に触れられていて素晴らしいです。特にベースイメージ選び(Scratch/Busybox/Alpine Linux)について、ここまできちんと書かれているのはWebでも見かけたことが無いかもしれません。皆さんが日頃から使っているDockerイメージのFROMを改めて辿ってみると、新しい発見があるかもしれないですね。

ちょっとだけ気になったところ

  • Docker Hubについては、Automated Buildの解説があると良いかなと思いました。業務用途ではあまり利用することはありませんが、公開されているイメージの中身を知るためには仕組みを知っておくと良いと思っています。
  • Amazon ECR(Elastic Container Registry)やGCR(Google Container Registry)の解説があると良いと思いました。付録B.1の代替候補として挙げられると思います。

まとめ

「Docker/Kubernetes 実践コンテナ開発入門」は、Dockerを本番で使うスキルを最短で習得できるオススメの書籍です。Docker周辺を勉強したいインフラエンジニアはもちろん、普段あまり意識せずにDockerを利用しているアプリ開発者の方にも読みやすい書籍だと思います。

脚注

  1. 正確にはSNSでクレクレ君したことをここで白状します
  2. Swarmを当て馬にしているのは大正解だと思います
  3. k8sの長いYAMLを斜め読みで済ませられるのも良い