ISBN: 978-4-7981-4102-2
プログラマのためのDocker教科書―インフラの基礎知識&コードによる環境構築の自動化
サポート終了
| 著者 | WINGSプロジェクト 阿佐志保 |
|---|---|
| 監修 | 山田祥寛 |
| 出版社 | 翔泳社 |
| 価格 | 3,000円(税別) |
| 判型 | B5変判・1色 |
| ページ数 | 312ページ |
| 発売日 | 2015年11月19日 |
| 対象レベル | 初中級 |
コードでインフラ環境を構築するための入門書
インフラ構築「自動化」の経験がない、開発者を対象に、基礎からきっちり解説します。OSのしくみやネットワーク技術/仮想技術などのインフラの基礎知識に加えて、Dockerを使ったインフラ構築/運用管理の流れと手順を図をふんだんに使ってやさしく解説します。更新履歴
- 正誤訂正:2016年10月3日 更新
目次
- 第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」
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.185 | タグの設定例 | 3刷 |
| $ docker images ...後略... |
$ docker tag webserver localhost:5000/httpd $ docker images ...後略... |
2016/10/03 |
FAQ
現在、FAQはありません。
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。