|
【カテゴリ】 その他
プログラマのためのDocker教科書―インフラの基礎知識&コードによる環境構築の自動化
サポート終了
|
WINGSプロジェクト 阿佐志保/著
山田祥寛/監修
株式会社 翔泳社/発行
定価
3,300円
B5変版・
312ページ・
1色
ISBN 978-4-7981-4102-2
発刊日:
2015年11月19日
|
本書の特徴
コードでインフラ環境を構築するための入門書
インフラ構築「自動化」の経験がない、開発者を対象に、基礎からきっちり解説します。OSのしくみやネットワーク技術/仮想技術などのインフラの基礎知識に加えて、Dockerを使ったインフラ構築/運用管理の流れと手順を図をふんだんに使ってやさしく解説します。
まとめて読んで 更にスキルアップのこんな書籍
- ・AWSを使ってクラウドでのシステム開発を学ぼう
- 「Amazon Web Servicesではじめる新米プログラマのためのクラウド超入門」(翔泳社)
本書について取り上げていただいたブログさま
-
・スーツとギークの狭間で -
noimpslmtbrkさま
-
【書評】プログラマのためのDocker教科書( @yyamada ) (2016年2月21日)
-
・be free -
高野 将さま
-
書評 | プログラマのためのDocker教科書(2015年12月30日)
-
・つれずれなるままの開発日記 -
coltwareさま
-
本の紹介「プログラマのためのDocker教科書」(2015年12月27日)
-
・Azureの小ネタ (改) -
StateMachineさま
-
書評 プログラマのためのDocker教科書(2015年12月26日)
-
・CodeZine -
渡部 拓也さま
-
インフラ構築をコードで自動化できる「Docker」の魅力――主婦と先生と作家をコンテナ仮想化で両立する阿佐志保さんの生き方(2015年11月30日)
Contents |
- 第1章 おさえておきたいシステム/インフラの知識
-
1-1 システム基盤の基礎知識
システム基盤の構成要素
機能要件(functional requirement)
非機能要件(non-functional requirement)
ハードウェア
ネットワーク
OS(オペレーションシステム)
ミドルウェア
システム基盤の種類(クラウドとオンプレミス環境)
オンプレミス(on-premises)
パブリッククラウド(public cloud)
プライベートクラウド(private cloud)
クラウドが適しているケース
オンプレミスが適しているケース
システム基盤の構築/運用の流れ
1-2 ネットワーク/ハードウェアの基礎知識
ネットワークアドレス
MACアドレス(物理アドレス/イーサネットアドレス)
IPアドレス
OSI基本参照モデルと通信プロトコル
アプリケーション層(レイヤー7)
プレゼンテーション層(レイヤー6)
セッション層(レイヤー5)
トランスポート層(レイヤー4)
ネットワーク層(レイヤー3)
データリンク層(レイヤー2)
物理層(レイヤー1)
ファイアウォール
パケットフィルタ型
アプリケーションゲートウェイ型
ルータ/レイヤー3スイッチ
サーバ機器
CPU
メモリ
ストレージ
1-3 OS(Linux)の基礎知識
Linuxの概要
Linuxカーネル
Linuxディストリビューション
Linuxカーネル
デバイス管理
プロセス管理
メモリ管理
Linuxファイルシステム
Linuxのディレクトリ構成
Linuxのセキュリティ機能
アカウントによる権限設定
ネットワークフィルタリングによる機能
SELinux(Security-Enhanced Linux)
1-4 ミドルウェアの基礎知識
Webサーバ/Webアプリケーションサーバ
データベースサーバ
システム統合運用監視ツール
1-5 インフラ構成管理の基礎知識
インフラ構成管理
Infrastructure as Code
代表的なインフラ構成管理ツール
OSの起動を自動化するツール(Bootstrapping)
OSやミドルウェアの設定を自動化するツール(Configuration)
複数サーバの管理を自動化するツール(Orchestration)
- 第2章 コンテナ仮想化技術とDocker
-
2-1 仮想化技術
仮想環境
ホスト型仮想化
ハイパーバイザー型仮想化
コンテナ型仮想化
2-2 コンテナ仮想化技術の歴史
2000年〜FreeBSD Jail
プロセスの区画化
ネットワークの区画化
ファイルシステムの区画化
2005年〜Solaris Containers
Solarisゾーン機能
Solarisリソースマネージャ機能
2-3 Dockerの特徴
移植性
相互接続性
Docker専用Linuxディストリビューション
Red Hat Enterprise Linux Atomic Host(RHEL Atomic Host)
Project Atomic
Snappy Ubuntu Core
CoreOS
2-4 Dockerの基本機能
Dockerイメージを作る機能
Dockerコンテナを動かす機能
Dockerイメージを公開/共有する機能
Dockerコンポーネント
Docker Engine(Dockerのコア機能)
Docker Kitematic(DockerのGUIツール)
Docker Registry(イメージ公開/共有)
Docker Compose(複数コンテナ一元管理)
Docker Machine(Docker実行環境構築)
Docker Swarm(クラスタ管理)
2-5 Dockerが動く仕組み
コンテナを区画化する仕組み(namespace)
PID namespace
Network namespace
UID namespace
MOUNT namespace
UTS namespace
IPC namespace
リソース管理の仕組み(cgroup)
ネットワーク構成(仮想ブリッジ/仮想NIC)
Dockerコンテナ同士の通信
Dockerコンテナと外部ネットワークの通信
Dockerイメージのデータ管理の仕組み
Btrfs
AUFS
Device Mapper
overlay
- 第3章 Dockerのインストールと基本コマンド
-
3-1 Dockerのインストールと動作確認
Windowsへのインストール
Docker Toolboxのダウンロードとインストール
Linuxへのインストール
TeraTermのインストールと使い方
Dockerで「Hello world」
Docker KitematicによるGUIでのDockerの動作確認
3-2 Dockerイメージの操作
Docker Hub
イメージのダウンロード(docker pull)
イメージの一覧表示(docker images)
イメージの詳細確認(docker inspect)
イメージのタグ設定(docker tag)
イメージの検索(docker search)
イメージの削除(docker rmi)
Docker Hubへのログイン(docker login)
イメージのアップロード(docker push)
Docker Hubからのログアウト(docker logout)
3-3 Dockerコンテナの生成/起動/停止
Dockerコンテナのライフサイクル
コンテナ生成(docker createコマンド)
コンテナ生成/起動(docker runコマンド)
コンテナ起動(docker startコマンド)
コンテナ停止(docker stopコマンド)
コンテナ削除(docker rmコマンド)
コンテナの生成/起動(docker run)
コンテナのバックグラウンド実行(docker run)
コンテナのネットワーク設定(docker run)
リソースを指定してコンテナを生成/実行(docker run)
コンテナを生成/起動する環境を指定(docker run)
稼働コンテナの一覧表示(docker ps)
コンテナの稼働確認(docker stats)
コンテナの起動(docker start)
コンテナの停止(docker stop)
コンテナの再起動(docker restart)
コンテナの削除(docker rm)
コンテナの中断/再開(docker pause/docker unpause)
3-4 稼働しているDockerコンテナの操作
稼働コンテナへの接続(docker attach)
稼働コンテナでプロセス実行(docker exec)
稼働コンテナのプロセス確認(docker top)
稼働コンテナのポート転送確認(docker port)
コンテナの名前変更(docker rename)
コンテナ内のファイルをコピー(docker cp)
コンテナ操作の差分確認(docker diff)
3-5 Dockerの情報確認
Dockerのバージョン確認(docker version)
Dockerの実行環境確認(docker info)
3-6 コンテナからイメージの作成
コンテナからイメージ作成(docker commit)
コンテナをtarファイル出力(docker export)
tarファイルからイメージ作成(docker import)
イメージの保存(docker save)
イメージの読み込み(docker load)
- 第4章 Dockerfileを使ったコードによるサーバ構築
-
4-1 Dockerfileの基本
Dockerfileの用途
Dockerfileの基本構成
Dockerfileの作成
DockerfileからDockerイメージの作成
Dockerイメージのレイヤー構造
4-2 コマンド/デーモンの実行
コマンドの実行(RUN命令)
Shell形式での記述
Exec形式での記述
デーモンの実行(CMD命令)
Shell形式での記述
Exec形式での記述
ENTRYPOINT命令のパラメータとしての記述
デーモンの実行(ENTRYPOINT命令)
Shell形式での記述
Exec形式での記述
ビルド完了後に実行される命令(ONBUILD命令)
手順1 ベースイメージの作成
手順2 Webコンテンツの開発
手順3 Webサーバ用イメージの作成
手順4 Webサーバ用コンテナの起動
4-3 環境/ネットワークの設定
環境変数の設定(ENV命令)
key value型で指定する場合
key=valueで指定する場合
作業ディレクトリの指定(WORKDIR命令)
ユーザの指定(USER命令)
ラベルの指定(LABEL命令)
ポートの設定(EXPOSE命令)
4-4 ファイルシステムの設定
ファイル/ディレクトリの追加(ADD命令)
ファイルのコピー(COPY命令)
ボリュームのマウント(VOLUME命令)
手順1 ログ用イメージの作成
手順2 ログ用コンテナの起動
手順3 Webサーバ用イメージの作成
手順4 Webサーバ用コンテナの起動
手順5 ログの確認
4-5 Dockerイメージの自動生成/公開
Automated Buildの流れ
GitHubへの公開
Docker Hubのリンク設定
Dockerfileのビルド
Dockerイメージの確認
- 第5章 Dockerイメージの共有——Docker Registry
-
5-1 プライベートレジストリの構築/管理
Dockerレジストリの構築
イメージのアップロード
イメージのダウンロード
5-2 Amazon S3を使ったイメージ共有
Amazon S3バケットの作成
Amazon S3バケットのアクセスキー取得
プライベートレジストリの起動
イメージのアップロード/ダウンロード
- 第6章 複数コンテナの一元管理——Docker Compose
-
6-1 DockerによるWebシステム構築の基礎知識
Web3層システムアーキテクチャ
フロントサーバ
アプリケーションサーバ
データベース(DB)サーバ
永続データの管理
データのバックアップ/リストア
ログの収集
Dockerコンテナ間のリンク
6-2 Docker Composeのインストール
Docker Compose
Docker Composeのインストール
6-3 構成ファイル(docker-compose.yml)の構文
docker-compose.ymlによる構成管理
ベースイメージの指定(image/build)
コンテナ内で動かすコマンド指定(command)
コンテナ間Link連携(link/external_links)
コンテナ間の通信(ports/expose)
コンテナのデータ管理(volumes /volumes_from)
コンテナの環境変数指定(environment)
コンテナの情報設定(container_name /labels)
6-4 Docker Composeコマンド
Docker Composeのコマンド
複数コンテナの生成(up)
生成するコンテナ数の指定(scale)
複数コンテナの確認(ps/logs)
コンテナでのコマンド実行(run)
複数コンテナの起動/停止/再起動(start/stop/restart)
複数コンテナの強制停止/削除(kill/rm)
6-5 Docker Composeを使ったWordPressシステム構築
WordPressのシステム構成
データ専用コンテナの作成
1.ベースイメージの取得
2.作成者情報
3.データの設定
WebサーバとDBサーバ用のコンテナ作成
1.Webサーバ(webserverコンテナ)
2.DBサーバ(dbserverコンテナ)
1.Webサーバの設定
2.DBサーバの設定
コンテナの起動とデータの確認
コンテナ群の稼働確認/コマンド実行/停止/削除
データ専用コンテナのバックアップとリストア
- 第7章 マルチホスト環境でのDocker 運用——Docker Machine、Docker Swarm
-
7-1 マルチホスト環境でのコンテナ運用
マルチホスト環境とクラスタリング
可用性(アベイラビリティ)
拡張性(スケーラビリティ)
Docker MachineとDocker Swarm
7-2 Docker Machineコマンド
Docker Machineのコマンド
実行環境の作成(create)
実行環境の一覧表示(ls/status)
実行環境へのSSH接続(ssh)
環境変数の確認(env)
実行環境の起動/停止/再起動(start/stop/restart)
実行環境からのファイルダウンロード(scp)
実行環境の削除(rm/kill)
実行環境の情報確認(ip/inspect)
7-3 Docker MachineによるDocker実行環境構築
Docker Machineを使ったDcoker実行環境の構成
VirtualBoxでのDocker実行環境構築手順
Amazon EC2でのDocker実行環境構築手順
7-4 Docker Swarmによるクラスタ管理
Docker Swarmによるクラスタ環境構築
クラスタ環境でのコンテナ動作確認
7-5 SaaSによるコンテナ監視
サーバ稼働監視の概要
マシンの死活監視
サービスの稼働監視
サーバ/ネットワークのリソース監視
ジョブ監視
Mackerelでのコンテナ監視手順
アカウントの作成
Dockerコンテナの監視
Datadogでのコンテナ監視手順
- 第8章 クラウドでのDocker運用
-
8-1 クラウド環境でのDockerサポート
Dockerをとりまくクラウド環境
Amazon Web Service
Microsoft Azure
Google Cloud Platform
IBM SoftLayer
Joyent Public Cloud
Amazon Web ServicesのDockerサポート
Amazon EC2を使う
Amazon ECSを使う
Elastic Beanstalkを使う
8-2 Amazon EC2 Container ServiceでのDocker実行環境構築
Amazon EC2 Container Service
Amazon ECSの主な特徴
AWS用語
Amazon ECSでのDocker実行環境構築/運用
タスク定義
サービス定義
クラスタ設定
- note
-
クラウドサービスのオートスケール機能
シェルの種類
Linuxカーネルの正体「vmlinuz」の名前の由来
システム運用設計の難しさ
コンテナの統一仕様を進める「Open Container Project」
Dockerイメージの改ざん防止機能
NATとNAPTの違い
Dockerのオープンソース開発
Mac OSへのDockerのインストール
イメージのなりすましや改ざんを防ぐには
プロンプト
Linuxコマンドは覚えないとダメ?
ウェルノウンポートについて
export/importとsave/loadの違い
中間イメージの再利用
Docker Hubはどんどん肥大化しない?
イメージのレイヤーの制限
コンテナ実行時にコマンド引数を任意に指定したいときは
ONBUILD命令を使ったチーム開発の進め方
ビルドに不必要なファイルの除外
Dockerfileの格納場所
時刻合わせのプロトコルNTPとは
GitとGitHub
ディザスタリカバリシステム
Amazon Web Services
Dockerを開発環境で利用する
コンテナで永続データを扱うときの注意点
ドメインネームについて
docker-compose.ymlをGUIで作成できるWebサイト
Linuxのシグナル
FigとDocker Compose
Raspberry Piで動かすDocker
冗長化構成の種類
Docker Swarmのホスト決定方式
Dockerの運用ツールあれこれ
運用監視ツールのグラフ表示機能
コンテナ構成図を表示できる「Weave Scope」
|
|