ISBN 9784839967673
試して学ぶ Dockerコンテナ開発
- 著者
- 櫻井 洋一郎/村崎 大輔
- 出版社
- マイナビ出版
- 刊行
- 2019-07
概要
複数言語・フレームワークの開発環境をDockerで構築する手順を体験する
想定読者
Dockerを使ったことがないか使い始めたばかりのWebアプリ開発者。PHP・Node.js・Ruby・Pythonのいずれかを扱っており、ローカル開発環境をコンテナ化したい人。
こんな人には向いていない
- Docker Composeを用いた複数コンテナ構成や本番運用のオーケストレーション(Kubernetes等)を学びたい中級以上のエンジニアには内容が入門寄りすぎる
- 特定の一言語・フレームワークだけを深く掘り下げたい読者には、複数言語を横断するチュートリアル構成で各言語の扱いが浅くなる
- 2019年7月刊行であり、現在のDockerおよび各フレームワークの最新バージョンへの追従を求める読者には情報の鮮度に注意が必要
読了後にできるようになること
- Dockerの基本概念(イメージ・コンテナ・エントリーポイント・ボリューム・ネットワーク)を実際のコマンドを通じて理解できる
- PHPとLaravel、Node.jsとNuxt.js、RubyとSinatraおよびRailsの実行環境をDockerfileを書いて構築できる
- 第三者が公開しているDocker Hubイメージを取得しカスタマイズする手順を習得できる
- JupyterLabにPyTorchとGPU(CUDA)サポートを追加するディープラーニング開発環境を構築できる
- Visdomによるデータ可視化コンテナを既存環境に組み合わせる方法を体験できる
- 開発用途に応じたDockerイメージ設計の基本的な判断軸(エントリーポイントの使い分け・ボリュームのマウント戦略)を身につけられる
本書のキー概念(章解説)
- 第 1 章 Dockerの基本 — Dockerとは何か・インストール・基本コマンドの全体像。以降の実践章への足場となる。既にDocker経験があれば確認程度でよい
- 第 2 章 実行環境としてのDockerイメージを構築する — PHP(Laravel)・Node.js・Ruby(Sinatra)の3スタックを対象に、Dockerfileを書いてイメージをビルドする体験章。言語ごとに独立しているため自分の使用言語から読み始めることもできる
- 第 3 章 開発作業に適したDocker環境を構築する — Ruby on Railsを題材に、アプリ生成から開発用構成の追加まで踏み込む。ホットリロードやDB接続などの実務的な構成を体験できる章
- 第 4 章 第三者が配布しているDocker環境をカスタマイズする — JupyterLabにPyTorchとGPU(CUDA)対応を追加するまでを扱う。既存イメージを拡張するパターンを学べる点で、Webアプリ以外の開発環境構築にも応用できる
- 第 5 章 Dockerの機能を使いこなす — イメージ・エントリーポイント・ボリューム・ネットワークをより体系的に整理する章。1〜4章を一通り動かした後に読むと、各機能の役割が腑に落ちやすい
ハイライト
- いくつかの言語やフレームワークを対象に、Dockerイメージをビルドしたり、Dockerコンテナ上で動作確認をしつつ、開発作業を進めるための手順をチュートリアル形式で紹介していきます。(本書の学習アプローチを端的に示す。手を動かしながら複数の現実的な開発スタックを体験するという構成の根拠)
- JupyterLab+PyTorchの環境構築(ディープラーニングの開発環境)・Dockerのイメージ、エントリーポイント、ボリューム、ネットワークの使いこなし(WebアプリだけでなくMLの開発環境まで扱う点が本書の守備範囲の広さを示している)
編集メモ
Qiita上でISBN(9784839967673)を直接言及する記事は確認できず、書名での検索でも本書への言及は見当たらない。同著者の別書(Dockerによるアプリケーション開発環境構築ガイド)に関するQiita記事は存在するが、本書とは別ISBN。外部シグナルが取得できないため supplementary とする
読む前に押さえておきたいこと
- コマンドライン(ターミナル)でのディレクトリ操作・ファイル編集ができる
- HTMLやプログラミングの基礎的な経験があり、少なくとも1つのWebフレームワーク(Rails・Laravel・Nuxt.js等)を触ったことがある
- 仮想化の概念(VMとコンテナの違いなど)を事前に調べておくと Chapter 1 の理解が速まる
学習のコツ
- Chapter 1 のコマンド解説は後の章でも繰り返し参照するため、手元でコマンドを打ちながら進めると索引代わりになる
- Chapter 2 は PHP・Node.js・Ruby の3言語が独立して構成されているため、まず自分が最も慣れた言語の節から始めると Docker への習熟スピードが上がる
- Chapter 3 のRails環境は開発用の追加構成(DBコンテナとの連携等)が入ってくるため、Chapter 2 を先に1本完走してから取り組むと詰まりにくい
- Chapter 4 のJupyterLab+PyTorchはGPU環境の有無で手順が分岐する。GPU非搭載のマシンで進める場合はGPU関連の節を読み飛ばして CPU 版で完走してから全体像を把握するとよい
- Chapter 5 は通読してから Chapter 1〜4 の Dockerfile を見返すと、各命令の意図が改めて確認でき理解の定着が深まる
出版社による内容紹介
コンテナ型の仮想環境を作成、実行するためのプラットフォーム、Dockerの実践解説書。 いくつかの言語やフレームワークを対象に、Dockerイメージをビルドしたり、Dockerコンテナ上で動作確認をしつつ、開発作業を進めるための手順をチュートリアル形式で紹介していきます。 本書で解説しているのは以下のような内容になります。 ・PHPの実行環境の構築(Laravelを例に) ・Node.jsの実行環境の構築(Nuxt.jsを例に) ・Rubyの実行環境の構築(Sinatraを例に) ・Ruby on Railsを例にしたWebアプリケーション開発環境の構築 ・JupyterLab+PyTorchの環境構築(ディープラーニングの開発環境) ・Dockerのイメージ、エントリーポイント、ボリューム、ネットワークの使いこなし Dockerを使うと開発に必要な環境を簡単に用意することができます。ぜひ本書の内容を試してみてください。 Chapter1 Dockerの基本 1-1 はじめに(この本の目的) 1-2 Dockerとは 1-3 Dockerのインストール 1-4 Dockerのコマンドや命令 Chapter2 実行環境としてのDockerイメージを構築する 2-1 PHPの実行環境の構築(Laravel) 2-2 Node.jsの実行環境の構築 2-3 Rubyの実行環境の構築(Sinatra) Chapter3 開発作業に適したDocker環境を構築する 3-1 Ruby on Railsの実行環境を構築する 3-2 Railsのアプリケーションを作成する 3-3 開発に必要な構成を追加する Chapter4 第三者が配布しているDocker環境をカスタマイズする 4-1 JupyterLabの環境を作る 4-2 PyTorchが使えるようにする 4-3 コンテナ環境でGPU(CUDA)が使えるようにする 4-4 Visdomでデータを可視化できるようにする Chapter5 Dockerの機能を使いこなす 5-1 Dockerのイメージについて 5-2 エントリーポイントを使いこなす 5-3 ボリュームとネットワーク
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。