関連サイト
本書の関連ページが用意されています。
内容紹介
Dockerでさまざまな実行環境、開発環境を構築するための実践ノウハウ
コンテナ型の仮想環境を作成、実行するためのプラットフォーム、Dockerの実践解説書。
本書は、エンジニアが普段行うようなWebアプリケーション開発環境の構築を、Dockerを用いて行うにはどのようにすればよいか、またその環境をDockerで作ることによってどのように開発を効率化させることができるか、にフォーカスした内容となっています。
PHPのLaravel、Node.jsのNuxt.js、RubyのSinatraとRuby on Rails、PythonのPyTorchといった、Webアプリケーションや機械学習の領域で用いられているものを対象として取り上げました。それぞれの解説は独立したものとなっているので、読者の方が使っている言語はもちろん、経験していない言語やフレームワークを試すのにも良いでしょう。
本書の構成は次のようになっています。
Chapter1「Dockerの基本」では、DockerやDocker Composeについて簡単に解説し、Docker環境のインストール手順を解説します。最後に、Dockerで使える機能を一望できるよう、Docker CLIやDocker Composeで使えるコマンドを一覧にまとめました。
Chapter2「実行環境としてのDockerイメージを構築する」では、Webアプリケーションの開発作業を想定し、Dockerでアプリケーションの実行環境を構築する手順について解説します。対象の言語環境はPHPのLaravel、Node.jsのNuxt.js、RubyのSinatraです。イメージ構築にあたってのポイントは、各々の環境で必要になるパッケージ(ライブラリ)のインストール手順です。
Chapter3「開発作業に適したDocker環境を構築する」では、Ruby on Rails(Rails)の環境を構築します。Railsは単体でも動作しますが、開発するにあたっては、データベースサーバーだけでなく、Springサーバーなどの常駐プロセスを動かす必要も出てきます。フロントエンドの開発スタイルによっては、さらにWebpackやVue.jsといったNode.jsの環境も必要になってきます。RubyとNode.jsの環境ではベースイメージが異なります。双方の言語を用意したイメージをビルドすることで、使い勝手の良い開発環境を作ることができます。
Chapter4「第三者が配布しているDocker環境をカスタマイズする」では、、第三者が配布している既存のDocker環境をカスタマイズする例として、ディープラーニングの環境をNVIDIA Dockerで動かす手順を解説します。Jupyter Notebookの開発元がJupyterアプリケーションの実行環境をDockerイメージとして配布しているので、その環境でJupyterLabを動かし、PyTorchを使えるようにし、最後にNVIDIA DockerでGPUを使った学習処理を評価してみます。
Chapter5「Dockerの機能を使いこなす」では、Dockerが提供している機能に対して、もう少し踏み込んだトピックを紹介します。イメージとレイヤー、エントリーポイント、ボリュームとネットワークなどの話題を解説しています。
書誌情報
- 著者: 櫻井 洋一郎, 村崎 大輔
- 発行日: 2019-07-25 (紙書籍版発行日: 2019-07-25)
- 最終更新日: 2019-07-25
- バージョン: 1.0.0
- ページ数: 336ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: マイナビ出版
対象読者
著者について
櫻井 洋一郎
Retty株式会社 エンジニア
東京大学大学院 情報理工学系研究科 創造情報学専攻2007年卒。NECの開発部門に7年間勤務。仕事の傍ら個人でサービスを開発し、過去に多数のWebサービス、アプリを開発。その後Retty株式会社の創業期にJoinし2度のiOSアプリリニューアルを遂行。iOS開発以外にもサーバサイド開発、DockerとKubernetesを使った社内開発環境の構築など幅広い業務を行う。また業務の傍らtry! Swift Tokyoでオーガナイザを務めるなどコミュニティ活動も行っている。
村崎 大輔
2016年よりフリーランスエンジニア。博士(情報理工学)。
Web系のスタートアップ企業を中心に開発支援とコンサルティングを手がける。情報工学の見識と高い適応力が強み。「新技術は食わず嫌いしない」がモットー。
目次
Chapter1 Dockerの基本
- 1-1 はじめに
- この本の目的
- 本書を読み進めるにあたって
- 1-2 Dockerとは
- コンテナ型の仮想化について
- Dockerのイメージについて
- Dockerを開発運用フローを改善するためのソリューションとして考える
- Docker Composeについて
- 1-3 Dockerのインストール
- Linux(Ubuntu)の場合
- Windowsの場合
- macOSの場合
- 1-4 Dockerのコマンドや命令
- Docker CLIのコマンド
- Dockerfileの命令
- Docker Composeのコマンド
Chapter2 実行環境としてのDockerイメージを構築する
- 2-1 PHPの実行環境の構築
- Laravelの環境
- 最初のプロジェクトの雛形作り
- プロジェクトの雛形を使った実行環境イメージの作成
- 効率的なbuildをするための設定
- ローカルでの開発環境
- 認証の導入
- 2-2 Node.jsの実行環境の構築
- Node.jsの環境
- 最初のプロジェクトの雛形作り
- プロジェクトの雛形を使った実行環境イメージの作成
- 効率的なbuildをするための設定
- ローカルでの開発環境
- Node実行環境のinitオプションについて
- 2-3 Rubyの実行環境の構築
- Sinatraとは
- 前準備
- Docker Composeのプロジェクトを作る
- ベースイメージの動作を確認してみる
- ホスト環境のディレクトリにアクセスできるように設定する
- Sinatraをインストールする
- Webサーバーを実行してみる
Chapter3 開発作業に適したDocker環境を構築する
- 3-1 Ruby on Railsの実行環境を構築する
- Ruby on Railsとは
- 前準備
- Docker Composeのプロジェクトを作る
- Node.js環境を追加する
- Node.jsのパッケージが使えるようにする
- 3-2 Railsのアプリケーションを作成する
- Railsコマンドでファイル一式を作成する
- Bundlerの設定を追加する
- Gemfileの依存関係を修正する
- Webサーバーを立ち上げて動作を確認する
- 3-3 開発に必要な構成を追加する
- コンテナの立ち上げ時にクリーンアップをおこなう
- 開発用ツールの設定を修正する
- Springを使うための構成を追加する
- Webpackerを使うための構成を追加する
- データベースサーバーを動かす(PostgreSQL)
- データベースサーバーを動かす(MySQL)
Chapter4 第三者が配布しているDocker環境をカスタマイズする
- 4-1 JupyterLabの環境を作る
- JupyterLabとは
- 前準備
- Jupyter Docker Stacksについて
- JupyterLabのコンテナを構成する
- コンテナ環境のユーザー情報を設定する
- 認証情報を固定する
- 4-2 PyTorchが使えるようにする
- PyTorchとは
- ビルドされたイメージを使うようにする
- ベースになっているイメージを確認しておく
- PyTorchをインストールしたイメージをビルドする
- PyTorchが使えることを確認する
- PyTorchのコードを動かしてみる
- 4-3 コンテナ環境でGPU(CUDA)が使えるようにする
- CUDAとは
- NVIDIA Dockerを使ってみる
- GPUで学習処理を実行してみる
- 4-4 Visdomでデータを可視化できるようにする
- Visdomとは
- Visdomサーバーが動作するコンテナを定義する
- Visdomサーバーの動作を確認する
- 学習処理の進捗をリアルタイムで表示させてみる
- デフォルト設定のままVisdomが使えるようにする
Chapter5 Dockerの機能を使いこなす
- 5-1 Dockerのイメージについて
- イメージとレイヤー
- レイヤーを調べる
- イメージサイズを最適化する
- マルチステージビルドを使う
- Alpineイメージを使う
- BuildKitを使う
- 5-2 エントリーポイントを使いこなす
- ENTRYPOINTとCMDの違い
- docker-entrypoint.shを用意する
- ENTRYPOINTのたたき台
- コマンドの内容を編集する
- 前処理を実行させる
- 5-3 ボリュームとネットワーク
- Docker Desktop for Macでのボリューム共有
- インストール時に作成されるネットワーク
- 独立したネットワークを利用する
- プライベートIP帯の衝突回避について