Docker

Book description

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

Table of contents

  1. 訳者まえがき
  2. はじめに
  3. 目 次 (1/2)
  4. 目 次 (2/2)
  5. Ⅰ部 背景と基本
    1. 1章 コンテナとはなにか、そしてなぜ注目されているのか
      1. 1.1 コンテナとVM
      2. 1.2 Dockerとコンテナ
      3. 1.3 Dockerの歴史
      4. 1.4 プラグインと結線
      5. 1.5 64bit Linux
    2. 2章 インストール
      1. 2.1 LinuxへのDockerのインストール
        1. 2.1.1 permissiveモードでのSELinuxの実行
        2. 2.1.2 sudoを使わない実行
      2. 2.2 Mac OSやWindowsへのDockerのインストール
      3. 2.3 クイックチェック
    3. 3章 はじめの一歩
      1. 3.1 初めてのイメージの実行
      2. 3.2 基本のコマンド群
      3. 3.3 Dockerfileからのイメージの構築
      4. 3.4 レジストリでの作業
        1. 3.4.1 プライベートリポジトリ
      5. 3.5 Redisの公式イメージの利用
      6. 3.6 まとめ
    4. 4章 Dockerの基礎
      1. 4.1 Dockerのアーキテクチャ
        1. 4.1.1 基盤の技術
        2. 4.1.2 周辺の技術
        3. 4.1.3 Dockerのホスティング
      2. 4.2 イメージの構築 (1/2)
      3. 4.2 イメージの構築 (2/2)
        1. 4.2.1 ビルドコンテキスト
        2. 4.2.2 イメージのレイヤ
        3. 4.2.3 キャッシュ
        4. 4.2.4 ベースイメージ
        5. 4.2.5 Dockerfileの命令
      4. 4.3 外界とのコンテナの接続
      5. 4.4 コンテナのリンク
      6. 4.5 ボリュームとデータコンテナを使ったデータの管理
        1. 4.5.1 データの共有
        2. 4.5.2 データコンテナ
      7. 4.6 Dockerの一般的なコマンド (1/3)
      8. 4.6 Dockerの一般的なコマンド (2/3)
      9. 4.6 Dockerの一般的なコマンド (3/3)
        1. 4.6.1 runコマンド
        2. 4.6.2 コンテナの管理
        3. 4.6.3 Dockerの情報
        4. 4.6.4 コンテナの情報
        5. 4.6.5 イメージの扱い
        6. 4.6.6 レジストリの利用
      10. 4.7 まとめ
  6. Ⅱ部 Dockerのあるソフトウェアライフサイクル
    1. 5章 開発でのDockerの利用
      1. 5.1 "Hello World!"
      2. 5.2 Composeを使った自動化
        1. 5.2.1 Composeのワークフロー
      3. 5.3 まとめ
    2. 6章 シンプルなWebアプリケーションの作成
      1. 6.1 基本的なWebページの作成
      2. 6.2 既存のイメージの利用
      3. 6.3 キャッシュの追加
      4. 6.4 マイクロサービス
      5. 6.5 まとめ
    3. 7章 イメージの配布
      1. 7.1 イメージとリポジトリのネーミング
      2. 7.2 Docker Hub
      3. 7.3 自動化ビルド
      4. 7.4 プライベートな配布 (1/2)
      5. 7.4 プライベートな配布 (2/2)
        1. 7.4.1 独自のレジストリの運用
        2. 7.4.2 商用のレジストリ
      6. 7.5 イメージサイズの削減
      7. 7.6 イメージの起源
      8. 7.7 まとめ
    4. 8章 Dockerを使った継続的インテグレーションとテスト
      1. 8.1 identidockへのユニットテストの追加
      2. 8.2 Jenkinsコンテナの作成 (1/2)
      3. 8.2 Jenkinsコンテナの作成 (2/2)
        1. 8.2.1 ビルドの実行
      4. 8.3 イメージのプッシュ
        1. 8.3.1 信頼できるタグ付け
        2. 8.3.2 ステージングと実働環境
        3. 8.3.3 イメージの散乱
        4. 8.3.4 Dockerを使ったJenkinsのスレーブのプロビジョニング
      5. 8.4 Jenkinsのバックアップ
      6. 8.5 ホストされたCIソリューション
      7. 8.6 テストとマイクロサービス
        1. 8.6.1 実働環境でのテスト
      8. 8.7 まとめ
    5. 9章 コンテナのデプロイ
      1. 9.1 Docker Machineを使ったリソースのプロビジョニング
      2. 9.2 プロキシの利用 (1/2)
      3. 9.2 プロキシの利用 (2/2)
      4. 9.3 実行オプション (1/2)
      5. 9.3 実行オプション (2/2)
        1. 9.3.1 シェルスクリプト
        2. 9.3.2 プロセスマネージャの利用(もしくはsystemdでまとめて管理)
        3. 9.3.3 設定管理ツールの利用
      6. 9.4 ホストの設定
        1. 9.4.1 OSの選択
        2. 9.4.2 ストレージドライバの選択
      7. 9.5 専門向けのホスティングの選択肢 (1/2)
      8. 9.5 専門向けのホスティングの選択肢 (2/2)
        1. 9.5.1 Trition
        2. 9.5.2 Google Container Engine
        3. 9.5.3 Amazon EC2 Container Engine
        4. 9.5.4 Giant Swarm
      9. 9.6 永続化データとプロダクションコンテナ
      10. 9.7 秘密情報の共有
        1. 9.7.1 秘密情報のイメージへの保存
        2. 9.7.2 環境変数での秘密情報の受け渡し
        3. 9.7.3 ボリュームでの秘密情報の受け渡し
        4. 9.7.4 キーバリューストアの利用
      11. 9.8 ネットワーキング
      12. 9.9 プロダクションレジストリ
      13. 9.10 継続的デプロイメント/デリバリ
      14. 9.11 まとめ
    6. 10章 ロギングとモニタリング
      1. 10.1 ロギング
        1. 10.1.1 Dockerでのデフォルトのロギング
        2. 10.1.2 ログの集約
        3. 10.1.3 ELKを使ったロギング
        4. 10.1.4 syslogを使ったDockerのロギング
      2. 10.2 rsyslogへのログのフォワード
        1. 10.2.1 ファイルからのログの取得
      3. 10.3 モニタリングとアラート (1/2)
      4. 10.3 モニタリングとアラート (2/2)
        1. 10.3.1 Dockerのツールでのモニタリング
        2. 10.3.2 cAdvisor
        3. 10.3.3 クラスタのソリューション
      5. 10.4 モニタリング及びロギングの商用ソリューション
      6. 10.5 まとめ
  7. Ⅲ部 ツールとテクニック
    1. 11章 ネットワーキングとサービスディスカバリ
      1. 11.1 アンバサダー
      2. 11.2 サービスディスカバリ (1/4)
      3. 11.2 サービスディスカバリ (2/4)
      4. 11.2 サービスディスカバリ (3/4)
      5. 11.2 サービスディスカバリ (4/4)
        1. 11.2.1 etcd
        2. 11.2.2 SkyDNS
        3. 11.2.3 Consul
        4. 11.2.4 登録
        5. 11.2.5 その他のソリューション
      6. 11.3 ネットワーキングの選択肢
        1. 11.3.1 ブリッジ
        2. 11.3.2 ホスト
        3. 11.3.3 コンテナ
        4. 11.3.4 なし
      7. 11.4 Dockerの新しいネットワーキング
        1. 11.4.1 ネットワークのタイプとプラグイン
      8. 11.5 ネットワーキングのソリューション (1/4)
      9. 11.5 ネットワーキングのソリューション (2/4)
      10. 11.5 ネットワーキングのソリューション (3/4)
      11. 11.5 ネットワーキングのソリューション (4/4)
        1. 11.5.1 Overlay
        2. 11.5.2 Weave
        3. 11.5.3 Flannel
        4. 11.5.4 Calicoプロジェクト
      12. 11.6 まとめ
    2. 12章 オーケストレーション、クラスタリング、管理
      1. 12.1 クラスタリングとオーケストレーションのツール (1/8)
      2. 12.1 クラスタリングとオーケストレーションのツール (2/8)
      3. 12.1 クラスタリングとオーケストレーションのツール (3/8)
      4. 12.1 クラスタリングとオーケストレーションのツール (4/8)
      5. 12.1 クラスタリングとオーケストレーションのツール (5/8)
      6. 12.1 クラスタリングとオーケストレーションのツール (6/8)
      7. 12.1 クラスタリングとオーケストレーションのツール (7/8)
      8. 12.1 クラスタリングとオーケストレーションのツール (8/8)
        1. 12.1.1 Swarm
        2. 12.1.2 fleet
        3. 12.1.3 Kubernetes
        4. 12.1.4 MesosとMarathon
      9. 12.2 コンテナ管理のプラットフォーム
        1. 12.2.1 Rancer
        2. 12.2.2 Clocker
        3. 12.2.3 Tutum
      10. 12.3 まとめ
    3. 13章 セキュリティとコンテナに対する制限
      1. 13.1 要注意事項
      2. 13.2 防御の詳細
        1. 13.2.1 最小限の権限
      3. 13.3 Identidockをセキュアにする
      4. 13.4 ホストによるコンテナの分離
      5. 13.5 更新の適用
        1. 13.5.1 サポートされていないドライバの回避
      6. 13.6 イメージの起源 (1/2)
      7. 13.6 イメージの起源 (2/2)
        1. 13.6.1 Dockerダイジェスト
        2. 13.6.2 Dockerのcontent trust
        3. 13.6.3 再現性と信頼性のあるDockerfile
      8. 13.7 セキュリティに関するtips (1/3)
      9. 13.7 セキュリティに関するtips (2/3)
      10. 13.7 セキュリティに関するtips (3/3)
        1. 13.7.1 ユーザーの設定
        2. 13.7.2 コンテナのネットワーキングの制限
        3. 13.7.3 setuid / setgidバイナリの削除
        4. 13.7.4 メモリの制限
        5. 13.7.5 CPUの制限
        6. 13.7.6 再起動の制限
        7. 13.7.7 ファイルシステムの制限
        8. 13.7.8 ケーパビリティの制限
        9. 13.7.9 リソース制限の適用(ulimit)
      11. 13.8 強化カーネルの利用
      12. 13.9 Linuxのセキュリティモジュール
        1. 13.9.1 SELinux
        2. 13.9.2 AppArmor
      13. 13.10 監査
      14. 13.11 インシデントレスポンス
      15. 13.12 将来の機能
      16. 13.13 まとめ
    4. 付録A 原書刊行後のアップデート
      1. A.1 「バッテリ内蔵」の拡大
      2. A.2 Docker for Mac/Windows
        1. A.2.1 Docker for Mac
        2. A.2.2 Docker for Windows
      3. A.3 Swarm mode
        1. A.3.1 Swarm modeの概要
        2. A.3.2 小規模なクラスタの構築とWebサーバーサービスのデプロイ
        3. A.3.3 クラスタの構築
        4. A.3.4 サービスのデプロイ
        5. A.3.5 ingressオーバーレイネットワークの確認
      4. A.4 Docker for AWS/Azure
      5. A.5 Docker CloudとDocker Datacenter
        1. A.5.1 Docker Cloud
        2. A.5.2 Docker Datacenter
  8. 索 引 (1/3)
  9. 索 引 (2/3)
  10. 索 引 (3/3)

Product information

  • Title: Docker
  • Author(s): Adrian Mouat, Sky株式会社 玉川 竜司
  • Release date: August 2016
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873117768

You might also like

book

入門 Kubernetes

by Kelsey Hightower, Brendan Burns, Joe Beda, 松浦 隼人

本書は、Kubernetesコンテナオーケストレータの核となるコンセプトから使い方までを解説するとともに、アプリケーションの開発やメンテナンスを改善するためにKubernetesとそのAPIがどのように役立つのかを説明します。はじめにKubernetesの概要と、Dockerなどのコンテナ技術を利用したアプリケーション開発の利点と使用方法について述べ、次にKubernetes自体をデプロイする方法を詳述します。そして、アプリケーションのライフサイクルに関係するDeploymentや、Kubernetesとストレージの統合について学び、実際に使われているアプリケーションをKubernetes上でデプロイする方法を紹介します。

book

Hands-On Microservices with Kubernetes

by Gigi Sayfan

Enhance your skills in building scalable infrastructure for your cloud-based applications Key Features Learn to design …

book

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

by Chris Dawson, Ben Straub, 池田 尚史, 笹井 崇司

本書は、さまざまな言語とGitHub APIを使って、いろいろなツールを作るアイデアを紹介する書籍です。オープンソースのWikiであるGollumを使う画像整理ツール、PythonとSearch APIを使ってレポジトリを検索するGUIツール、Gist APIを使ったRubyサーバーを作成します。またJavaScriptのチャットロボットHubotを使ってGitHubの通知を行う方法、JavaScriptとGit Data APIを使ってGitHubにシングルページアプリケーションをホストする方法なども紹介します。多彩なGitHub APIを使いながらツールを作ることで、ワークフロー構築のアイデアを得ることができる一冊です。

book

Infrastructure as Code ―クラウドにおけるサーバ管理の原則とプラクティス

by Kief Morris, 宮下 剛輔, 長尾 高弘

本書は、はじめにInfrastructure as Codeの原則と考え方を説明し、次にダイナミックインフラストラクチャプラットフォーム、インフラストラクチャ定義ツール、サーバ構成ツール、インフラストラクチャサービスの4つにカテゴライズして解説します。その上で、プロビジョニングやサーバーテンプレート管理のパターンから、テスト、変更管理パイプライン、組織やワークフローのプラクティスまでを詳述しており、Infrastructure as Codeを網羅的に理解することができます。各ツールの使い方よりも、背景にあるコンセプトや考え方の説明に重点を置くことで、特定のツールに縛られることなく、Infrastructure as Codeを適切に実現することを目指します。