Docker

[cover photo]
TOPICS
System/Network
発行年月日
PRINT LENGTH
384
ISBN
978-4-87311-776-8
原書
Using Docker
FORMAT
Print PDF
Ebook
3,960円
Ebookを購入する
Print
3,960円

本書はオープンソースのコンテナ管理ソフトウェア、Dockerの基礎から応用までを網羅した総合的な解説書です。はじめに開発環境をセットアップし、シンプルなWebアプリケーションのビルドについて解説した上で、コンテナの開発、テスト、結合に加えて、デプロイの方法、実動システムの効率的なモニタリングとロギングを紹介します。そして複数のホストからなるDockerコンテナのクラスタを、安全かつ高い信頼性の下で実行するために必要な高度なテクニックやツールについて紹介します。さらにネットワークやセキュリティについても詳述。Dockerとそのエコシステムを本格的に活用したい開発者、運用エンジニア、システム開発者必携の一冊です。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表


※2刷以降では修正済み

■P.xvi 上から8行目
【誤】9.5.3 Amazon EC2 Container Engine
【正】9.5.3 Amazon EC2 Container Service

■P.15 上から7行目
【誤】$ sudo usermod -aG docker
【正】$ sudo usermod -aG docker $USER

■P.24 上から16行目
【誤】$ docker run test/cowsay-dockerfile /usr/games/cowsay "Moo"
【正】$ docker run test/cowsayimage /usr/games/cowsay "Moo"

■P.32-33 上から12-13行目
【誤】

root@ca38735c5747:/data# redis-cli -h redis -p 6379 redis:6379
> ping
【正】
root@ca38735c5747:/data# redis-cli -h redis -p 6379
redis:6379
> ping

■P.47 上から1行目
【誤】exex形式
【正】exec形式

■P.51 下から9行目
【誤】先に起動されいなければならない
【正】先に起動されていなければならない

■P.105 下から3行目
【誤】つけって
【正】使って

■P.166 下から8行目
【誤】9.5.3 Amazon EC2 Container Engine
【正】9.5.3 Amazon EC2 Container Service

第2刷正誤表


※3刷以降では修正済み

■P.32 上から5行目
【誤】docker log
【正】docker logs

■P.41 上から4行目
【誤】Dockder
【正】Docker

■P.47 上から4行目
【誤】実行ファイルの名前を見なし、
【正】実行ファイルの名前と見なし、

■P.97 上から16行目
【誤】作業だけでiさらに
【正】作業だけでさらに

目次

訳者まえがき
はじめに

Ⅰ部 背景と基本

1章 コンテナとはなにか、そしてなぜ注目されているのか
    1.1 コンテナとVM
    1.2 Dockerとコンテナ
    1.3 Dockerの歴史
    1.4 プラグインと結線
    1.5 64bit Linux

2章 インストール
    2.1 LinuxへのDockerのインストール
        2.1.1 permissiveモードでのSELinuxの実行
        2.1.2 sudoを使わない実行
    2.2 Mac OSやWindowsへのDockerのインストール
    2.3 クイックチェック

3章 はじめの一歩
    3.1 初めてのイメージの実行
    3.2 基本のコマンド群
    3.3 Dockerfileからのイメージの構築
    3.4 レジストリでの作業
        3.4.1 プライベートリポジトリ
    3.5 Redisの公式イメージの利用
    3.6 まとめ

4章 Dockerの基礎
    4.1 Dockerのアーキテクチャ
        4.1.1 基盤の技術
        4.1.2 周辺の技術
        4.1.3 Dockerのホスティング
    4.2 イメージの構築
        4.2.1 ビルドコンテキスト
        4.2.2 イメージのレイヤ
        4.2.3 キャッシュ
        4.2.4 ベースイメージ
        4.2.5 Dockerfileの命令
    4.3 外界とのコンテナの接続
    4.4 コンテナのリンク
    4.5 ボリュームとデータコンテナを使ったデータの管理
        4.5.1 データの共有
        4.5.2 データコンテナ
    4.6 Dockerの一般的なコマンド
        4.6.1 runコマンド
        4.6.2 コンテナの管理
        4.6.3 Dockerの情報
        4.6.4 コンテナの情報
        4.6.5 イメージの扱い
        4.6.6 レジストリの利用
    4.7 まとめ

Ⅱ部 Dockerのあるソフトウェアライフサイクル

5章 開発でのDockerの利用
    5.1 "Hello World!"
    5.2 Composeを使った自動化
        5.2.1 Composeのワークフロー
    5.3 まとめ

6章 シンプルなWebアプリケーションの作成
    6.1 基本的なWebページの作成
    6.2 既存のイメージの利用
    6.3 キャッシュの追加
    6.4 マイクロサービス
    6.5 まとめ

7章 イメージの配布
    7.1 イメージとリポジトリのネーミング
    7.2 Docker Hub
    7.3 自動化ビルド
    7.4 プライベートな配布
        7.4.1 独自のレジストリの運用
        7.4.2 商用のレジストリ
    7.5 イメージサイズの削減
    7.6 イメージの起源
    7.7 まとめ

8章 Dockerを使った継続的インテグレーションとテスト
    8.1 identidockへのユニットテストの追加
    8.2 Jenkinsコンテナの作成
        8.2.1 ビルドの実行
    8.3 イメージのプッシュ
        8.3.1 信頼できるタグ付け
        8.3.2 ステージングと実働環境
        8.3.3 イメージの散乱
        8.3.4 Dockerを使ったJenkinsのスレーブのプロビジョニング
    8.4 Jenkinsのバックアップ
    8.5 ホストされたCIソリューション
    8.6 テストとマイクロサービス
        8.6.1 実働環境でのテスト
    8.7 まとめ

9章 コンテナのデプロイ
    9.1 Docker Machineを使ったリソースのプロビジョニング
    9.2 プロキシの利用
    9.3 実行オプション
        9.3.1 シェルスクリプト
        9.3.2 プロセスマネージャの利用(もしくはsystemdでまとめて管理)
        9.3.3 設定管理ツールの利用
    9.4 ホストの設定
        9.4.1 OSの選択
        9.4.2 ストレージドライバの選択
    9.5 専門のホスティングの選択肢
        9.5.1 Trition
        9.5.2 Google Container Engine
        9.5.3 Amazon EC2 Container Engine
        9.5.4 Giant Swarm
    9.6 永続化データとプロダクションコンテナ
    9.7 秘密情報の共有
        9.7.1 秘密情報のイメージへの保存
        9.7.2 環境変数での秘密情報の受け渡し
        9.7.3 ボリュームでの秘密情報の受け渡し
        9.7.4 キーバリューストアの利用
    9.8 ネットワーキング
    9.9 プロダクションレジストリ
    9.10 継続的デプロイメント/デリバリ
    9.11 まとめ

10章 ロギングとモニタリング
    10.1 ロギング
        10.1.1 Dockerでのデフォルトのロギング
        10.1.2 ログの集約
        10.1.3 ELKを使ったロギング
        10.1.4 syslogを使ったDockerのロギング
    10.2 rsyslogへのログのフォワード
        10.2.1 ファイルからのログの取得
    10.3 モニタリングとアラート
        10.3.1 Dockerのツールでのモニタリング
        10.3.2 cAdvisor
        10.3.3 クラスタのソリューション
    10.4 モニタリング及びロギングの商用ソリューション
    10.5 まとめ

Ⅲ部 ツールとテクニック

11章 ネットワーキングとサービスディスカバリ
    11.1 アンバサダー
    11.2 サービスディスカバリ
        11.2.1 etcd
        11.2.2 SkyDNS
        11.2.3 Consul
        11.2.4 登録
        11.2.5 その他のソリューション
    11.3 ネットワーキングの選択肢
        11.3.1 ブリッジ
        11.3.2 ホスト
        11.3.3 コンテナ
        11.3.4 なし
    11.4 Dockerの新しいネットワーキング
        11.4.1 ネットワークのタイプとプラグイン
    11.5 ネットワーキングのソリューション
        11.5.1 Overlay
        11.5.2 Weave
        11.5.3 Flannel
        11.5.4 Calicoプロジェクト
    11.6 まとめ

12章 オーケストレーション、クラスタリング、管理
    12.1 クラスタリングとオーケストレーションのツール
        12.1.1 Swarm
        12.1.2 fleet
        12.1.3 Kubernetes
        12.1.4 MesosとMarathon
    12.2 コンテナ管理のプラットフォーム
        12.2.1 Rancher
        12.2.2 Clocker
        12.2.3 Tutum
    12.3 まとめ

13章 セキュリティとコンテナに対する制限
    13.1 要注意事項
    13.2 防御の詳細
        13.2.1 最小限の権限
    13.3 Identidockをセキュアにする
    13.4 ホストによるコンテナの分離
    13.5 更新の適用
        13.5.1 サポートされていないドライバの回避
    13.6 イメージの起源
        13.6.1 Dockerダイジェスト
        13.6.2 Dockerのcontent trust
        13.6.3 再現性と信頼性のあるDockerfile
    13.7 セキュリティに関するtips
        13.7.1 ユーザーの設定
        13.7.2 コンテナのネットワーキングの制限
        13.7.3 setuid / setgidバイナリの削除
        13.7.4 メモリの制限
        13.7.5 CPUの制限
        13.7.6 再起動の制限
        13.7.7 ファイルシステムの制限
        13.7.8 ケーパビリティの制限
        13.7.9 リソース制限の適用(ulimit)
    13.8 強化カーネルの利用
    13.9 Linuxのセキュリティモジュール
        13.9.1 SELinux
        13.9.2 AppArmor
    13.10 監査
    13.11 インシデントレスポンス
    13.12 将来の機能
    13.13 まとめ

付録A 原書刊行後のアップデート
    A.1 「バッテリ内蔵」の拡大
    A.2 Docker for Mac/Windows
        A.2.1 Docker for Mac
        A.2.2 Docker for Windows
    A.3 Swarm mode
        A.3.1 Swarm modeの概要
        A.3.2 小規模なクラスタの構築とWebサーバーサービスのデプロイ
        A.3.3 クラスタの構築
        A.3.4 サービスのデプロイ
        A.3.5 ingressオーバーレイネットワークの確認
    A.4 Docker for AWS/Azure
    A.5 Docker CloudとDocker Datacenter
        A.5.1 Docker Cloud
        A.5.1 Docker Datacenter

索引
Dockerコマンド
Dockerfile命令
用語