Software Design plusシリーズDocker 実践入門
―― Linux コンテナ技術の基礎から応用まで
2015年9月26日発売
中井悦司 著
B5変形判/200ページ
定価(本体2,680円+税)
ISBN 978-4-7741-7654-3
この本の概要
Linuxのコンテナ技術の1つであるDockerは,迅速なWebサービスの展開に必要不可欠なものであり,多くのIT企業が注目している重要なものである。本書では,そのしくみを明らかにし,DockerをGitHubと連携したデプロイ方法を基礎から解説する。Dockerfileの書き方や管理ツールであるkubernetesとの連携方法,レッドハット社のAtomicHostでの使い方など,最新かつ定番的な情報を盛り込んだ実践的な入門書である。
こんな方におすすめ
- Webエンジニア,サーバエンジニア,ネットワークエンジニア,インフラエンジニア,システムエンジニア
著者の一言
はじめに
お待たせしました! 「Dockerを使って何かを始めたい」「Dockerでコンテナーは起動したけど中のしくみがよくわからない」 ── そんなあなたに向けたDockerの入門書がようやく完成しました。「コンテナーだから軽くて便利」「アプリケーションの可搬性が高まる」など,さまざまなうわさ話を耳にするDockerですが,まずは本書に目を通して,その技術的な特徴,そして,その背後にある「思想」を理解してください。
Dockerは,アプリケーションの実行に必要なファイルをすべてまとめた「コンテナーイメージ」を作成して,Linuxコンテナーでアプリケーションを実行する機能を提供します。しかしながら,Dockerの機能だけに注目していても,その実力は見えてきません。Dockerは,もともとは米dotCloud社が提供するPaaS(Platform as a Service)のサービスを実現するコンポーネントとして開発がスタートしました。その背後には,「継続的インテグレーション/継続的デリバリー」の実現を容易にして,サーバーシステムの運用を根本から変革しようという大きな目標があります。
その本質を理解することで,Docker本来の効率的な活用法が自然にわかるようになります。本書では,「裏ワザ」的なカスタマイズ方法の解説は避け,できるだけシンプルで,技術的にも自然な活用法を中心に紹介しています。Dockerのようにシンプルで「イケてる」ツールは,まずはシンプルに使いこなすのが正解です。さまざまなシーンで気軽に活用する中で,自分なりのベストな使い方を発見してください。
また,Docker内部のしくみに目を向けると,Linuxコンテナーを始めとするさまざまなLinux関連技術が活用されています。dm-thin(Device MapperのThin Provisioningモジュール)を用いたイメージ管理など,Linux好きにはたまらなく興味深いしくみも隠されています。コンテナーイメージの階層構造など,外から見ているだけではわかりにくい点については,内部構造にまで踏み込んだ解説をしています。このような内部構造への知的好奇心からDockerに興味を持ったという,筆者と「同類」の方にも満足していただけることでしょう。
Dockerを取り巻く環境は,今も急速に変化を続けています。本書では,参考として,KubernetesやAtomic Hostなどの関連ツール,あるいはoverlayfsやCRIUなどの新技術についても触れています。ただし,本書の中心は,あくまでもDockerそのものです。新たに登場するツールや技術の表面的な違いにまどわされず,その本質を理解するための基礎知識を本書を通して身につけていただけることを期待しています。
設定ファイルなどは,本書の補足情報ページを参照ください。
本書のサンプル
本書の一部ページを,PDFで確認することができます。
- サンプルPDFファイル(601KB)
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
はじめに
第1章 Docker入門
1.1 Dockerの利用形態
- 1.1.1 Dockerで何ができるのか?
- 1.1.2 Dockerによるアプリケーション開発の世界
1.2 Dockerが解決する課題
- 1.2.1 継続的インテグレーションにおける環境の維持管理
- 1.2.2 継続的デリバリーにおけるデプロイの効率化
- 1.2.3 Immutable Infrastructureによる確実なインフラ管理
1.3 Dockerの基礎技術
- 1.3.1 Linuxコンテナー
- 1.3.2 ディスクイメージ管理機能
- 1.3.3 ネットワーク管理機能
- 1.3.4 CPUとメモリーの制御
1.4 Gitの使い方
- 1.4.1 Gitによるバージョン管理
- 1.4.2 Gitの基本操作
第2章 Dockerの利用方法
2.1 Dockerの基本操作
- 2.1.1 CentOS 7のインストール
- 2.1.2 Dockerのインストールとコンテナーの起動
- 2.1.3 コンテナーのライフサイクル
- 2.1.4 ポートフォワーディングによる外部からの接続
- 2.1.5 Dockerレジストリーの活用
2.2 コンテナーイメージの自動作成
- 2.2.1 はじめてのDockerfile
- 2.2.2 Dockerfileとシェルスクリプトの連携
- 2.2.3 Gitと連携した自動化
2.3 複数コンテナーの連携活用
- 2.3.1 同一ホスト上でのコンテナーの連携
- 2.3.2 異なるホスト間でのコンテナーの連携
2.4 公開イメージの活用.86
- 2.4.1 「docker run」ですぐに実行 ─ NyanCat
- 2.4.2 GitHubからコンテナーイメージを作成 ─ WordPress
第3章 dockerコマンドリファレンス
3.1 dockerデーモンの管理
- 3.1.1 dockerサービスの操作方法
- 3.1.2 dockerデーモンの起動オプション
- 3.1.3 構成情報の確認:version,info
3.2 Docker HUBとプライベートレジストリーの利用
- 3.2.1 Docker Hubの検索:search
- 3.2.2 プライベートレジストリーの検索
- 3.2.3 コンテナーイメージのダウンロード:pull
- 3.2.4 コンテナーイメージのアップロード:login,push
3.3 コンテナーイメージの管理
- 3.3.1 ローカルイメージの一覧表示:images
- 3.3.2 イメージのタグ付けと削除:tag,rmi
- 3.3.3 イメージの作成履歴確認:history
- 3.3.4 コンテナーイメージの保存:commit
- 3.3.5 ローカルイメージの書き出しとリストア:save,load
- 3.3.6 ファイルシステムの書き出しとリストア:export,import
3.4 コンテナーの操作
- 3.4.1 コンテナーの起動:run,create
- 3.4.2 コンテナーの停止/再起動:stop,start,restart,kill,wait
- 3.4.3 コンテナーの破棄:rm
3.5 コンテナーの状態確認
- 3.5.1 コンテナーの一覧表示:
- 3.5.2 コンテナー内のプロセスを表示:top
- 3.5.3 コンテナー内の出力を表示:logs
- 3.5.4 コンテナー内のファイルを確認:diff,cp
- 3.5.5 コンテナー内のプロセスに接続:attach
- 3.5.6 コンテナー内でコマンドを実行:exec
3.6 Dockerfileによるコンテナーイメージ作成
- 3.6.1 buildサブコマンドの使い方
- 3.6.2 Dockerfileで使用する命令
第4章 Dockerの内部構造と関連ツール
4.1 Dockerの内部構造
- 4.1.1 コンテナー内部のプロセス管理
- 4.1.2 コンテナーイメージ管理
- 4.1.3 複数ホストのネットワーク管理
4.2 Kubernetesによるオーケストレーション
- 4.2.1 Kubernetesのアーキテクチャ
- 4.2.2 Kubernetesのインストール
- 4.2.3 Webサーバーの負荷分散構成例
4.3 Atomic Hostの利用
- 4.3.1 Atomic Hostの特徴
- 4.3.2 rpm-ostreeによるバージョン管理
- 4.3.3 SPC(Super Privileged Container)の利用
4.4 今後の発展
- 4.4.1 overlayfsによるコンテナーイメージ管理
- 4.4.2 CRIUによる稼働状態コンテナーの保存
おわりに
この本に関連する書籍
-
Dockerエキスパート養成読本[活用の基礎と実践ノウハウ満載!]
Dockerは,アプリケーションの開発・配布・実行のための,オープンソース・コンテナ型仮想化技術です。2013年の登場以来,重要なITインフラ技術として,エンジニアから...
-
プロのためのLinuxシステム・10年効く技術
刷を重ねる「プロのためのLinuxシステム」シリーズ第3弾。Linuxを使いこなすにあたり,マスターしておきたい本当に深い部分のシステムアーキテクチャの解説,そして運用...
-
プロのためのLinuxシステム構築・運用技術
金融機関のシステムでも採用され,社会インフラとしてのLinuxの活用が広がる今,企業システムとして構築・運用できる技術者が求められています。このような背景で本格的...