- Dockerの基礎
- Dockerとは
- Dockerの歴史
- Dockerの基礎概念
- Dockerの考えに触れる
- Dockerを利用する意義
- 環境差異問題からの脱却
- アプリケーションの構成管理のしやすさ
- 本番環境に導入してこそのDocker
- 新しい開発スタイルへ
- ローカルDocker環境を構築する
- Docker for Windowsのインストール
- Docker for Macのインストール
- Docker for Windows/Macの基本設定
- Dockerとは
- Dockerコンテナのデプロイ
- コンテナでアプリケーションを実行する
- DockerイメージとDockerコンテナの基本
- 簡単なアプリケーションとDockerイメージをつくる
- Dockerコンテナを実行する
- Dockerイメージの操作
- docker image build - イメージのビルド
- docker search - イメージの検索
- docker image pull - イメージの取得
- docker image ls - イメージの閲覧
- docker image tag - イメージのタグ付け
- docker image push - イメージの公開
- Dockerコンテナの操作
- Dockerコンテナのライフサイクル
- docker container run - コンテナの作成と実行
- docker container ls - コンテナの一覧
- docker container stop - コンテナの停止
- docker container restart - コンテナの再起動
- docker container rm - コンテナの破棄
- docker container logs - 標準出力での取得
- docker container exec - 実行中コンテナでのコマンド実行
- docker container cp - ファイルのコピー
- 運用管理向けコマンド
- prune - 破棄
- docker container stats - 利用状況の取得
- Docker Composeでマルチコンテナを実行する
- docker composeによるコンテナの実行
- Composeによる複数コンテナの実行
- コンテナでアプリケーションを実行する
- 実用的なコンテナの構築とデプロイ
- アプリケーションとコンテナの粒度
- 1コンテナ=1プロセス?
- 1コンテナに1つの関心事
- コンテナのポータビリティ
- Kernel・アーキテクチャの違い
- ライブラリ・ダイナミックリンクの課題
- Dockerフレンドリなアプリケーション
- 環境変数を活用する
- 永続化データをどう扱うか
- Data Volume
- Data Volumeコンテナ
- コンテナ配置戦略
- Docker Swarm
- Service
- Stack
- ServiceをSwarmクラスタ外から利用する
- アプリケーションとコンテナの粒度
- Swarmによる実践的なアプリケーション構築
- Webアプリケーションの構成
- アプリケーションの仕様
- アーキテクチャ
- TODOアプリケーション構築の全体像
- MySQL Serviceの構築
- データベース・コンテナ構成
- 認証情報
- MySQLの設定 - etc/mysql/mysql.conf.d/mysqld.cnf
- レプリケーションを設定する
- MySQL(mysql_master/mysql_slave)のDockerファイル
- Swarm上でMaster/Slaveサービスを実行する
- MySQLコンテナを確認し、初期データを投入する
- API Serviceの構築
- todoapiの基本構造
- アプリケーションでの環境変数の制御
- MySQL接続、テーブルマッピング
- Handlerを実装する
- APIのDockerfile
- Swarm上でtodoapiサービスを実行する
- Nginxの構築
- nginx.confを構築する
- NginxのDockerfile
- Nginxを通してアクセスできるようにする
- Webの構築
- TODO APIを呼び出し、ページのHTMLを返却する
- WebのDockerfile
- 静的ファイルの扱いを工夫する
- Nginxを通してアクセスできるようにする
- Ingressで公開する
- コンテナオーケストレーションによる開発スタイル
- Webアプリケーションの構成
- Kubernates入門
- Kubernetesとは
- Dockerの隆盛とKubernetesの誕生
- Kubernetesの位置付け
- ローカル環境でKubernetesを実行する
- Docker for Windows/MacでローカルKubernates環境を構築する
- Kubernetesの概念
- KubernetesクラスタとNode
- Namespace
- Pod
- Podを作成してデプロイする
- Podを操作する
- ReplicaSet
- Deployment
- ReplicaSetライフサイクル
- ロールバックを実行する
- Service
- ClusterIP Service
- NodePort Service
- LoadBalancer Service
- ExternalName Service
- Ingress
- Ingressを通じたアクセス
- Kubernetesとは
- Kubernetesのデプロイ・クラスタ構築
- Google Kubernetes Engineのセットアップ
- GCPプロジェクトの作成
- Google Clocd SDK(gcloud)のセットアップ
- Kubernetesクラスタの作成
- GKE上にTODOアプリケーションを構築する
- Master Slave構成のMySQLをGKE上に構築する
- PersistentVolumeとPersistentVolumeClaim
- StorageClass
- StatefulSet
- TODO APIをGKE上に構築する
- TODO WebアプリケーションをGKE上に構築する
- IngressでWebアプリケーションをインターネットに公開する
- オンプレミス環境でのKubernetesクラスタの構築
- kubesprayでKubernetesクラスタを構築する
- クラスタとして構築するサーバの準備
- opsのSSH公開鍵の登録
- IPv4フォワーディングを有効にする
- クラスタの設定
- クラスタ構築の実行
- Google Kubernetes Engineのセットアップ
- Kubernetesの発展的な利用
- Kubernetesの様々なリソース
- Job
- CronJob
- Secret
- ユーザー管理とRole-Based Access Control(RBAC)
- RBACを利用して権限制御を実現する
- ServiceAccount
- Helm
- Helmのセットアップ
- Helmの概念
- Chartをインストールする
- Chartでアプリケーションをアンインストールする
- RBACに対応したアプリケーションをインストールする
- 独自のChartを作成する
- Kubernatesにおけるデプロイ戦略
- RollingUpdate
- コンテナ実行時のヘルスチェックを設定する
- BlueGreen Deployment
- Kubernetesの様々なリソース
- コンテナの運用
- ロギングの運用
- コンテナにおけるロギング
- コンテナログの運用
- FluentdとElasticsearchによるログ収集・検索機構の構築
- fluentd logging driverの運用イメージ
- Kubernatesにおけるログの管理
- その他のログ収集ツール
- Dockerホストやデーモンの運用
- コンテナのライブリストア
- dockerdのチューニング
- 障害対策
- Docker運用での障害対策
- Kubernates運用での障害対策
- ロギングの運用
- より軽量なDockerイメージを作る
- なぜ軽量なイメージを作るべきなのか
- イメージサイズの増大で発生する弊害
- 軽量なベースイメージ
- scratch
- BusyBox
- Alpine Linux
- 軽量なDockerイメージをつくる
- multi-stage builds
- ビルドコンテナと実行コンテナを分ける
- なぜ軽量なイメージを作るべきなのか
- Dockerの様々な活用方法
- チーム開発で開発環境を統一・共有する
- 利用するソフトウェア・ツールを統一する
- 開発環境は集合知
- コマンドラインツールをDockerコンテナで利用する
- イメージによって利用するCLIのバージョンを切り替える
- シェルスクリプトをDockerコンテナで実行する
- 負荷テスト
- 実験環境のセットアップ
- master/slave構成で複数コンテナから負荷テストを実行する
- チーム開発で開発環境を統一・共有する