入門docker 復習(7)
プロダクションでの活用
オーケストレーションツール
オーケストレーションツールとは
- 複数のDockerを扱うための技術
- 主に以下の機能をもち、本番のワークロードに必要な機能を備えている
- Dockerの管理/自動復旧
- ネットワークの管理
- オートスケール
代表的なオーケストレーションツール
- docker-compose
- Docker社が所管するオーケストレーションツール
- ローカルでDockerを動かす際のデファクトスタンダードなツール
- Docker for Windows/Mac インストール時に同時にインストールされる
- swarm
- docker-composeと同じくDocker社所管ツール
docker-compose.yml
を拡張することで本番のワークロードでDockerを使用できる
- ECS(Elastic Container Service)
- AWSが開発したオーケストレーションツール
- 他のツールより責任範囲が狭いため、学習コストが低い
- Kubernetes
- Google社が開発したオーケストレーションツール
- 現在のデファクトスタンダート
docker-compose
概要
- docker-composeはローカルでDockerのオーケストレーションを行うツール
- DockerのビルドからNetworkやVolumeの管理をコードベースで定義して行う
サンプル
version: '3.7' services: nginx: build: context: . dockerfile: docker/nginx/Dockerfile volumes: - ./public:/var/www/html/public:ro ports: - 8080:80 environment: PHP_HOST: app app: build: context: . dockerfile: Dockerfile env_file: - .env.example # volumes: # - .:/var/www/html:cached mysql: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql:delegated command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci environment: MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' ports: - 13306:3306
version
- docker-composeのバーション
- こだわりがなければ最新を記述
services
- 起動するコンテナの定義
- ngix,app,mysqlを定義
image
- コンテンを起動するDockerImageを指定
build
- docker buildの実行情報
- この情報をもとにDockrをビルドし、ビルドしたイメージを使用してコンテナを起動する
- imageまたはbuildどちらかを記述
volumes
- ボリュームのマウントを行う
-
- ポートの解放を行う
- 左にホスト、右にコンテナのポートを指定する
environment
- 起動するコンテナへ環境変数を定義する
env_file
- ファイルに記載された環境変数を読み取り、コンテナに定義する
command
- Dockerfileで定義されているCMDの上書きを行う
docker-composeのコマンド
up
- カレントの
docker-compose.yaml
を参照してdocker-composeの起動docker-compose up
- カレントの
down
- カレントの
docker-compose.yaml
に紐づいているContainerとNetworkを削除docker-compose down
- イメージも削除
docker-compose down --rmi all
- カレントの
rm
- Volumeを削除
docker-compose rm
- Volumeを削除