WEB+DB PRESS
WEB+DB PRESS vol.86
- 作者: 結城洋志,沖元謙治,足永拓郎,林健太郎,大竹智也,内田誠悟,伊藤直也,中山裕司,hiroki.o,泉水翔吾,佐藤太一,高橋俊幸,西尾泰和,舘野祐一,中島聡,橋本翔,はまちや2,竹原,麻植泰輔,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2015/04/23
- メディア: 大型本
- この商品を含むブログを見る
第4章 本番環境の構築と Docker コンテナのデプロイ
- コンテナプラットフォーム
- オーケストレーションツール
- Machine, Swarm, Compose
- Kubernetes
- Fleet
- Panamax
- Lattice
- Centurion
- Ansible Docker module
- Dockership
- Capistrano
- OSS PaaS
- Deis
- Openshift3
- Flynn
- Rancher
- 運用の難易度は高め
- Capistrano
- 比較的枯れたツール
- オーケストレーションツールのニーズに対応
- オーケストレーションツールのベストは不在
- 自社のインフラの規模やデプロイのニーズに合わせて選ぶ必要がある
- Capstratrano によるオーケストラ
% git clone https://github.com/spesnova/docker-example-capistrano.git
% cd docker-example-capistrano/coreos/
% cp .env.sample .env
% vagrant up
- Capistrano のインストール
% vagrant ssh core-01 core@core-01 ~ $ cap -version ... Capistrano Version: 3.3.5 (Rake Version: 10.4.2)
- PostgreSQL の用意
core@core-01 ~ $ cap postgres deploy
- nginx コンテナのデプロイ
core@core-01 ~ $ cap nginx deploy
core@core-01 ~ $ cap rails-blue deploy core@core-01 ~ $ cap ps MACHINE ID NAME STATUS PORTS COMMAND 172.17.8.101 5d5fb52 capistrano.1430525675 Up 2 seconds cap ps 172.17.8.103 a42e044 docker-example-nginx Up 16 minutes /opt/nginx/sbin/nginx 172.17.8.102 5ad6a2c docker-example-nginx Up 16 minutes /opt/nginx/sbin/nginx 172.17.8.102 6644478 docker-example-rails-blue Up 45 seconds 0.0.0.0:8091->3000/tcp bundle exec puma -C config/puma.rb 172.17.8.103 a96e2d7 docker-example-rails-blue Up 45 seconds 0.0.0.0:8091->3000/tcp bundle exec puma -C config/puma.rb 172.17.8.101 b89ffba postgres Up 30 minutes 0.0.0.0:5432->5432/tcp /docker-entrypoint.sh postgres
- データベースのマイグレーション
core@core-01 ~ $ cap rails-blue run
- nginx との連携
core@core-01 ~ $ cap nginx deploy:switch[blue]
- Rails コンテナのブルーグリーンデプロイ
core@core-01 ~ $ cap rails-green deploy deploy:switch[green]
- オーケストレーション自動化のポイント
- 失敗が起こりえる前提で進める
- 各操作を独立して自動化する
- one-off コンテナによる管理タスクの実行
- 短命なコンテナ
- ephemeral コンテナとも
- Swarm を使ったオーケストレーション
- Swarm によるフィルタリング
- どういうホストできどうすべきかという条件を与えることができる
- Swarm によるリソースマネージメント vaがどれくらい CPU とメモリを使うかを指定しておく
第5章 Docker 運用ノウハウ
- 変更のしやすさが重要
- Docker イメージの分割
- Docker イメージのテスト
- infrataster
- テストする側もコンテナに
- できる限りすべてをコンテナで行う
- Wercker を利用したイメージの CI
- モニタリング
- ログ管理
- ホストマシンの運用
- できるだけホストマシンにパッケージをインストールしないこと
- コンテナを止められる、捨てられるようにしておくこと
- Machine による upgrade で Docker のバージンアップ
- CoreOS による Docker のバージョンアップ
- パフォーマンスチューニング
- VOLUME 機能
- UnionFS をバイパス
- ホストネットワーキング
- VOLUME 機能
- セキュリティ