Docker/Kubernetes 実践コンテナ開発入門
発売してすぐ購入したものの思ったように読む時間が取れずようやく読了(ざっくりだけど)
- 作者: 山田明憲
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
Dockerの基礎から始まりdocker-compose、Swarm、Kubernetesと段階的に解説されておりわかりやすい構成でした。
ちょうどDocker for MacがKubernetes対応したタイミングだったこともあり最新情報が盛り込まれてたのもよかったです。
初版だったためか誤植が多かったのがちょっと難点でした。
が、それでも内容としてはとてもよかったです。
せめてDocker類のコマンドは再読してちゃんと理解する…!!
Kubernetesは独特の概念やら用語が多いので実運用してみないと使いこなせなそうだなぁ…
以下は知識整理用のメモ
Dockerとは
- コンテナ型仮想化技術を実現するために実行される常駐アプリケーション
- それを操作するためのコマンドフロントインターフェイス
コンテナ仮想化技術
- 仮想化ソフトウェアなしにOSのリソースを隔離し仮想OSを実現する
- この仮想OSをコンテナと呼ぶ
- コンテナ生成のオーバーヘッドは他の仮想化ソフトウェアと比較して少ない
- そのため高速に起動・終了でき少ないマシンリソースで済む
Dockerを利用する意義
- 不変な実行環境による冪等性の確保
- 環境構築とアプリケーション構成のコード化
- 実行環境とアプリケーションの一体化によるポータビリティ向上
- アプリケーションやミドルウェアの構成管理の容易さ
Docker Compose
- 複数のコンテナ実行を一括管理できる構成管理ツール
- yaml形式の設定ファイルで管理
Data Volume
Data Volumeコンテナ
- コンテナ間でディレクトリを共有
- 使う側はホストを意識する必要がなくVolumeコンテナを指定すればよい
Docker Swarm
- 複数のDockerホストを束ねてクラスタ化するツール
- コンテナオーケストレーションシステムの一つ
- Docker in Docker
- Dockerホストとして機能するDockerコンテナ
- Dockerホストをコンテナで入れ子にできる
- Kubernetesの前振りっぽい感じもあったのであとは省略
-
- コンテナの運用を自動化するためのコンテナオーケストレーションシステム
- Dockerホストの管理、コンテナ配置、スケーリング、ロードバランサー、死活監視を備える
- 様々なリソースを組み合わせて、柔軟性の高いアプリケーションを構築できる
- リソース:アプリケーションのデプロイを構成する部品のようなもの
Node
- クラスタの管理下に登録されているDockerホスト
- コンテナをデプロイするために利用される
Namespace
Pod
- コンテナの集合体の単位
- 少なくとも1つのコンテナを持つ
- GoアプリケーションとNginxコンテナを一括りにするとか
- 同一Pod内のコンテナは必ず同一Nodeに配置される
ReplicaSet
- 同じ仕様のPodを複数生成・管理するためのリソース
Deployment
- ReplicaSetより上位のリソース
- アプリケーションデプロイの基本単位となるリソース
- ReplicaSetを管理・操作する
- ReplicaSetの世代管理が可能
- 指定されたPod数の確保、新バージョンへのPod入れ替え、以前バージョンへのロールバックなどを行う
Service
Job
- 1つ以上のPodを作成し、指定された数のPodが正常完了するまでを管理するリソース
- 終了してもPodは残るのでログや実行結果の確認が可能
- バッチ系のアプリケーション向き
Helm
- Chartを管理するツール
Chart
- マニフェストテンプレートのパッケージ
- 複数環境にデプロイするアプリケーションであればChartでパッケージングしHelmでデプロイやアップデートを行う