'sqr'atch-note

ちりはつもれど ちりぬるを

『Docker/Kubernetes実践コンテナ開発入門』読んだ

  • 日常的にDockerを活用してないのでDockerの情報が追えておらず知識が古くなってしまいがちなので、最近の情報をキャッチアップするためにも買って読んでみた。
    • 本書は、2018年の初版を大幅改訂した"改訂新版"ではあるが、ぼくは初版の方を読んでいない。
  • 意外(失礼)に内容がしっかりしており好印象。表紙がポップだったので、よくある入門書のように簡単に使い方を説明して終わりなのかなと思っていた。
    • 実際には、コンテナをどう設計するか(第3章)、第9章以降は運用していくための知識がまとまっており、非常に良かった。
  • 4章では、Webアプリケーションにおいてよく用いられるWeb3層アーキテクチャのWebアプリケーションをコンテナで構築するというハンズオン形式の内容になっている。
    • 4章に限らず本書ではGo言語(Golang)がWebアプリを記述する言語として使用されているのも個人的にポイントが高い。といっても、Golangの知識が無くても全く問題は無く、読めると実際に何をやってるのかがより詳しく分かって嬉しい位。
    • Golangが使われてる理由としては、Golangがシングルバイナリを作れるからコンテナとの親和性が高く、さらにバックエンドで使われてるケースが多いからだと思う。Dockerやk8sGolangで記述されてもいるし。
  • 個人的な本書での学びは、envsubstコマンドの存在を知ったことで(p.151)、本書ではnginxのイメージで利用できるテンプレートエンジン的な仕組みとして紹介されてる。中身はenvsubstコマンドをラップしたシェルスクリプトで実現している。
    • composeのyamlでenvironment属性から環境変数をコンテナに渡してあげて、コンテナの中でテンプレートファイルからコンフィグファイルを生成するという仕組みなので、自分がコンテナイメージを作るときにも使えそうだし、積極的に使っていきたいと思った。
  • 普段、ホスト環境を汚したくないけどミドルウェアの動きを見たいからコンテナ使ってるケースが多いので、使い捨て前提でコンテナのベストプラクティスを無視した汚いDockerfileを書いてしまっており、本書で述べられているような「より良いイメージを作る」こともあまり意識していない。
    • マルチステージビルドとenvsubstコマンドは、次にコンテナを作るときには意識していきたい。
  • 無意識に動かしてる部分であっても、こういう本の説明を見て始めて仕組みに気づいて納得できるという場面があるし、やはり読書は面白い。