ようへいの日々精進XP

よかろうもん

「Docker エキスパート養成読本」を読んだ

はじめに

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!]

Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!]

Docker について改めて勉強したいと思ったので正座して読んだ。


目次

以下のように巻頭、基本編、実践編との三部作。

巻頭記事

  • Docker プラットフォームがもたらすもの

基本編 ゼロから始める Docker 入門

  • 第 1 章 Docker Engine の基礎知識
  • 第 2 章 Dockerfile の基礎知識
  • 第 3 章 Kubernetes 実践入門

実践編 Docker 実践活用術

  • 第 1 章 [開発者のための] 試してわかる Docker 活用術
  • 第 2 章 Docker による環境構築の自動化入門
  • 第 3 章 [ビルドとテストを自動化] Drone 入門
  • Column Docker の活用と今後の期待
  • 第 4 章 Gunosy が本気で試した Docker 投入・検証記

ネタバレに注意しながら

巻頭記事で最近の Docker 界隈を網羅

Docker を取り巻く現状と Docker 社が目指す方向性、CoreOS との決別、各社の Docker への取り組み、そして Docker が抱える問題が網羅されており、ここを読むだけで最近の Docker 界隈のトレンドをキャッチアップすることが出来た。

基礎編を読めば脱 Docker 初心者

@takipone さんが冒頭の章を書かれている基本編には「ゼロから始める Docker 入門」というタイトルが付いているだけあって、MacWindows 及び Linux 環境への Docker Engine への導入について多めのてスクリーンショットを使って親切に解説されている。また、コンテナのライフサイクル等が分かり易い図で解説されていたり、基本的な docker コマンドの実行例や Dockerfile の各命令の解説や使い方等も網羅されているのも有り難い。

更にコンテナクラスタを管理する Kubernetes についてもサンプルを用いて解説されており、ひと通り Docker を弄った後の次のステップとしてコンテナを使ったクラスタ管理を試してみたかった、脱初心者を目指したい自分にとってとても興味深い内容だったが、基礎と呼ぶには若干ハードルが高い印象だった。(自分自身が Kubernetes の概念を理解するところだったからもしれない...)

実践編を読んで明日から Docker を身近に

サブタイトルに「開発/運用でどう使うか」とあり、著者の方々が現場で Docker をどのように利用しているか、又、一歩進んだ Docker の利用法について書かれている。

開発の中で活かす Docker ということで Boot2Docker の概念や使い方、Boot2Docker 以外の PanamaxKitematic の紹介、開発チームが利用する各種ツールを Docker で運用する事例等が実際の docker コマンドの例とともに紹介されていて、明日からでも個人や自分のチームで利用出来そうに親切に書かれており非開発者以外の人でも Docker を意識することなく利用出来る環境も整いつつあるのかなと感じた。

@zembutsu さんによる Dockerfile や Docker Compose や Hashicorp 製の各種ツールを使ったコンテナ管理について書かれている。 Docker Compose は fig っぽいなーという印象(※ Docker Compose は fig に置き換えられたんですな)をうけつつ、Terraform の今後の Docker サポートに期待しつつ、Hashicorp 製ツールでも Docker 扱えるツールがこんなにもある(Vagrant / Packer / Terraform)のかー。

Docker コンテナを利用した CI ツール Drone 入門ということで Drone の導入から Bitbucket との連携について詳細に解説されている。Docker ならではの手軽にクリーンな環境で CI が出来るという点では Drone 面白いなあと思いつつ AWSCodeDeployCodeCommitCodePipeline の Code 三兄弟との連携も楽しみなところではある。(連携するのかは不明だけど)

本番環境に Docker を利用している Gunosy の導入までの検証や経緯について書かれている。詳しくは書籍を手にとって読んで頂けければと思うが、1 コンテナ内で複数のプロセスを動作させる為に Supervisord を利用したり、肥大化する Dockerfile を分割して組み合わせたりしながらコンテナを作成する等の Docker を本番環境で運用する為のノウハウと今後の課題が書かれており、これから Docker を本番環境等で利用したいと考えている方々に参考になるのではと思った。


さいごに

本書を読んで感じたのは...

  • Docker そのものは lscat のように OS 標準的なツールになりつつある
  • その手軽さ故に CI ツールや使い捨てが可能な環境において利用が促進しそう
  • 但し、コンテナ故の制約やセキュリティ等の課題を抱えている
  • 制約を理解しつつプロダクション環境での利用も増えていくのでは
  • Docker は周辺のエコシステムを巻き込んだりしながら、今後も進化していくんだろうなー

本書について

  • 各章がとても読みやすく 3 時間程度で読むことが出来た
  • 著者の事例等が詳しく書かれており手元でも試すような例も多数あり良かった
  • 図やコマンドの実行例等も解りやすかったし、Docker のメリット、デメリットも平等に記載れていた
  • 同様の内容(例:Dockerfile のコマンド)が異なる章にそれぞれ記載されていて纏めても良いのではと思った
  • Docker の使い方については詳しく書かれていたが、Docker を実現する仕組み等についても書かれていると良いと思った

ということで、これから Docker を始めたい方、既に Docker を触っている方、皆さんにおすすめ出来ると良著に出会えて良かったばい。