部屋の隅っこで書く技術ブログ

Web系企業勤務のエンジニアリングマネージャのブログです。技術ブログと称しつつ技術にまつわる個人的な話題が多めです。

「自宅ではじめるDocker入門」はアプリエンジニアが最低限Docker覚えるのに良い本だった

「自宅ではじめるDocker入門」を写経しながら読んで完走しました。

本書は改訂版が出たばかりですが、購入済みだった旧版を読みました。(以下のリンクは改訂版)

お察しの方もいるかと思いますが、写真はコメダで撮ってます。

のむクロネージュ美味しい🤗

なんで読もうと思ったか

Webサービスを運用している大抵の会社はそうだと思いますが、社内の開発環境構築がDockerで行われているから。

使い方だけ教えてもらえればとりあえず使うことはできるのですが、知らずに使っていると不具合があったときに対処はおろか調査もできません。

また、サービス運用に使っている場合は障害時の対処などもできなくなります。

「だったら早くやれよ」という話で、ずーっと「やらなきゃやらなきゃ」で気になっていて手をつけられずにいたのですが、

  • 週末の時間が空き、少し読書のペースが上がったこと
  • Ruby/Rails、ソフトウェア設計、マネジメント、学習法など優先して読みたかった本を読み終わったこと

などから、やっと着手することができました。

どうやって読んだか

最初から順番に手を動かしながら読んでいき、初めて知った部分をメモしていく、という形式で進めています。

関連する情報を付け加えると情報を記憶しやすくなるらしいので、その場で思ったことや、トラブった内容、関連して調べた内容なども一緒にメモします。

ほか、「内容を自分の言葉でまとめる」のは意識的にやっていきました。

土日どちらか1日投入するのを3週繰り返して完走しましたが、LinuxもといUnix-likeな環境に不慣れな人はもっとかかるかも。

何が書いてあったか

内容を大雑把にまとめると、「Dockerfileとdocker-compose.ymlを読んで使えるようになる」です。

もう少し細かくまとめると、以下のようになります。実際にnginxをリバースプロキシにしたり、Wordpressを立ち上げたりもします。

  • コンテナとイメージの作成・起動・管理
  • コンテナとイメージのファイル化(saveとexport)
  • ポートリレーの設定
  • データボリュームの作成・管理
  • データボリュームコンテナの作成・バックアップ・リストア
  • Dockerfileの書き方
  • docker-compose.ymlの書き方

公式チュートリアルとの差

Dockerには公式チュートリアルがあります。

github.com

qiita.com

こちらは和訳をざっとみた程度なのですが、本書にない内容である

  • Docker Hubでのイメージの共有
  • Docker Desktopの使い方
  • マルチステージビルド

などはカバーされている一方で、

  • データボリュームコンテナ
  • イメージ管理

などはほとんど触れられていないため、アプリケーション開発者としては本書のほうがありがたい内容かなと思いました。

古い版を持っている人は買い直した方が良いか

古い版であることから、

  • サーバとして立てた仮想マシンのネットワーク設定が変わっており調べて対処する必要がある
  • Wordpressのバージョンが変わっておりうまく起動しない

などの問題がありましたが、他にほとんど詰まる点はありませんでした。

先日書店に行って新しい版をパラパラめくってみましたが、目立って新しい点はなかったように思います。

今から古い版を買う必要はありませんが、古い版をもう持っている人は新しい版を無理に買う必要はない、という感じです。

完走した感想

サクサク進められる

環境構築まで含めて丁寧に解説している本で、かつ手を動かす際の雑音が少ないため、サクサク進められる本でした。

Docker Composeの必要性を体感しやすい構成

また、Docker Composeの必要性を体感しやすい構成となっています。

というのも、Docker Composeの解説の前に「Dockerfileを複数書いてマルチコンテナでWebアプリを動かす」という演習にまるまる1章割かれているからです。

煩わしい思いをしてからそれを改善する技術を紹介されるので、納得感があります。

アプリエンジニア向け

そのDocker Composeの解説をして本が終わるため、本書の内容ではクラウドネイティブなインフラ運用をするには全く足りなさそうです。

しかし、アプリエンジニアが環境構築したり新しいミドルウェアを試したりするためには十分な内容です。本書はアプリエンジニア向けといえます。

ちなみに、イメージやデータボリュームの管理が詳しく解説されているので、地味にマシンのストレージ容量を圧迫するコンテナキャッシュへの対処法も調べられるようになります。

今後どうするか

とりあえずアプリエンジニアとしては最低限のラインまで手を動かせるようになった感じですが、それ以降どの方向に勉強を進めればよいか、とっかかりがありません。

そこで、某エンジニアSlackで相談してみました。以下の方向に学習をすすめると良さそうです。

  • OSSのDockerfileやdocker-compose.ymlを読む
  • 実際の運用のとっかかりとしてわかばちゃんの本を読む

llminatoll.booth.pm

あと、書店でDockerの本をいくつか手にとってみたのですが、技術解説にしっかり紙面が割かれているのがオライリーのDocker本だったので、こなれてきたらこちらを読むのはアリかなと思っています。教養として。

まとめ

  • 「自宅ではじめるDocker入門」を手を動かしながらメモを取る形式で完走した
  • Dockerfileとdocker-compose.ymlを読めるようになり、アプリエンジニアには良い本だった
  • 改訂版が出ているが、もう持っている人は無理して買う必要はなさそう

本文中に「関連する情報を付け加えると情報を記憶しやすくなる」とありましたが、最近は認知科学を勉強しています。

単純に興味が満たされるだけでなく、応用の余地がありそうな内容が沢山あって面白いです。

勉強法や読書法の形に昇華できればよいんですけどね。

それでは。