目次
CHAPTER1 Dockerを使ってみよう
SECTION01 Dockerとコンテナ技術について学ぼう
コンテナって何?
Dockerのエディションについて知ろう
SECTION02 Dockerをインストールしよう
CentOS7(Linux)へのインストール
Docker DesktopをWindowsとMacに導入する
仮想マシンを作ってみよう
SSHでDockerに接続する
SECTION03 Dockerを体験してみよう
Hello Worldイメージの展開
nginx(Webサーバー)の展開
dockerコマンドの体系
レジストリの基本
公式リポジトリと非公式リポジトリ(一般ユーザー)
DockerHubへのログイン/ログアウト
SECTION04 コンテナの利用法を学ぼう
コンテナのライフサイクル
コンテナの作成
稼働済みのコンテナでコマンドを発行
helpkコマンドの使い方
コンテナ情報の確認
コンテナの停止と起動
コンテナの破棄
SECTION05 Dockerの使いどころを知ろう
Dockerイメージはどこでも動かせる
インフラをコード化できる
アプリを小分けで開発できる
Dockerでやるべきではないこと
CHAPTER2 イメージの利用と開発を体験しよう
SECTION01 Dockerイメージを使いこなそう
イメージの使い方の全体像
イメージを検索する
同一名のイメージを区別するタグ
イメージをPullして確認する
イメージを削除してみる
どのDockerイメージレジストリを使うべきか
SECTION02 イメージを作成してレジストリに登録してみよう
イメージ作成から登録までの流れ
コンテナを起動してパッケージをインストール
ホスト(Windowsなど)からコンテナにファイルを送る
コンテナを停止してイメージ化する
イメージの階層構造について
イメージのにタグ付けする
レジストリ(DockerHub)へのPush
DockerHub上のイメージを削除するには
SECTION03 どこでも使えるイメージを作ろう
構築するWebアプリの構成
環境変数を使ったイメージのパラメーター
アプリで環境変数を利用する
環境変数を使って設定ファイルを作成する
環境変数ファイルを利用する
SECTION04 Ansibleを使てDockerホストを構築しよう
リモートのDockerホストを使う
AnsibleでDockerホストを作成しよう
CHAPTER3 Dockerネットワークとストレージを理解しよう
SECTION01 Dockerネットワークを使いこなそう
Dockerネットワークの基礎を知ろう
ポートフォワーディングでコンテナを外に公開しよう
ネットワークを作成/削除し、使ってみよう
コンテナ間の名前解決
SECTION02 データ揮発性とデータ永続化について知ろう
コンテナのストレージの仕組み
コンテナ内のログ出力を標準出力に出す
Dockerホストでコンテナのログを管理しよう
データ永続化の手法を知ろう
Bindによるデータ永続化を試してみよう
ボリュームによるデータ永続化を試してみよう
SECTION03 WordPressをデータ永続化してみよう
ここで作成するWordPressサイトの構造
データ永続化されたMySQLとWordPressを立ち上げよう
永続化領域のバックアップとリストアを試してみよう
SECTION04 Dockerの仕組みを知ろう
コンテナのランタイムとセキュリティを知ろう
Dockerのネットワークの仕組みを知ろう
Dockerの階層化ストレージの仕組みを知ろう
CHAPTER4 Dockerfileでイメージを作成しよう
SECTION01 Dockerfileの基本を知ろう
アプリ開発の流れとDockerfileの利点
アプリサーバーをDockerfileでビルドしてみよう
差分キャッシュを使った時短ビルドを試してみよう
ディレクトリのコピーと.dockerignore
SECTION02 Docker向けの小さいイメージを作成してみよう
Alpine LinuxでGo言語のアプリサーバーを作成してみよう
ステージングビルドで容量削減してみよう
バイナリアプリのみのコンテナを作ってみよう
Dockerfileを作るコツ
SECTION03 コンテナ上のアプリを正しく動かそう
アプリをPID1として起動しよう
終了シグナルをハンドルしてアプリを安全に停止させよう
supervisorで複数の子プロセス(アプリ本体)を管理しよう
SECTION04 GitとGitHubを使ってみよう
GitHubの利用法を知ろう
GitHubを使ったDockerイメージの開発手段を試そう
CHAPTER5 Composeを使ってマルチコンテナアプリを作ろう
SECTION01 Docker Composeを使ってみよう
Composeを使ってコンテナ利用法を定義できる
Composeでnginxを展開してみよう
ComposeでWordPressとMySQLを展開してみよう
SECTION02 Composeを使ってイメージ開発してみよう
ComposeでDockerfileを使ってみよう
Dockerを使った開発の利点と面倒くささ
ソースコードをBindしてコンテナを更新
Bindを使った開発法をnginxのサイト作成で試してみよう
SECTION03 Composeのその他の機能を学ぼう
Composeを使ってリモートDockerホストを操作しよう
Composeファイル内で環境変数を参照しよう
その他のComposeの命令を使ってみよう
SECTION04 Composeで本格的な3階層アプリを開発してみよう
開発するアプリの構成について
KVS(Redis)の操作とREST APIの利用法を知ろう
アプリサーバー(Flask)を構築しよう
Webサーバー(nginx)を構築しよう
CHAPTER6 DockerアプリでCI/CDしよう
SECTION01 継続的開発とデプロイについて知ろう
SCMとパイプラインを使ったCI/CDの実現
CI/CDではDockerを多用できる
Jenkinsについて知ろう
Jenkinsfileを使ったパイプラインの作り方を知ろう
SECTION02 DockerベースのCI/CD環境を準備しよう
環境の全体構成を把握しよう
Dockerホスト上にJenkinsを用意しよう
GitHubリポジトリを作成しよう
Jenkinsfileを確認しよう
Jenkinsのジョブを作成しよう
SECTION03 パイプラインを実行してみよう
手動ビルドでパイプラインを実行してみる
ビルドの履歴を確認してみる
SCMを更新して自動でパイプラインを実行させよう
Jenkinsfileの処理を見てみよう
パイプライン処理1:変数の定義
パイプライン処理2:環境などの事前チェック
パイプライン処理3:ビルド環境でイメージを作成
パイプライン処理4:ビルド環境でユニットテストを実行
パイプライン処理5:イメージをレジストリに登録
パイプライン処理6:本番環境で本番用イメージを自動展開
CHAPTER7 Kubernetesを理解しよう
SECTION01 Kubernetesについて知ろう
Kubernetesの概要
Kubernetesの歴史
開発エンジニア視点で見たKubernetes
インフラエンジニア視点で見たKubernetes
Kubernetesの構成要素
Kubernetes環境の構築
SECTION02 Kubernetesでアプリを展開しよう
命令方式によるnginxの展開
マニフェストファイルの概要
マニフェストによるnginxの展開
SECTION03 Kubernetesのネットワークについて知ろう
ネットワークの種類
MySQLのマニフェスト
WordPressのマニフェスト
CHAPTER8 Kubernetesを利用しよう
SECTION01 Kubernetes用イメージを開発しよう
開発の流れ
Composeによるイメージのビルド
Kubernetesでのイメージ展開
SECTION02 デプロイメントを使ってみよう
デプロイメントリソースの概要
ポッドの水平スケールと自動復旧
どのようなポッドを水平スケールさせられるか
バージョンアップ戦略
ロールバック
SECTION03 次世代のインフラとアプリ設計について学ぼう
インフラと開発技術の歴史
Docker/Kubernetesを使ったクラウドの抽象化
DevOpsを実現させる方向性を知ろう