GMOインサイトのインフラ担当Mです。
皆さん、Docker使っていらっしゃいますか?
本日は皆さんのDocker Lifeをより豊かにしてくれる
docker-composeについて綴ってみたいと思います。
docker-composeとは
Dockerで複数のコンテナを連携させてサービスを提供する場合、
コンテナを立ち上げる順番などの管理が煩雑になる場合があります。
docker-composeを利用すると、専用の設定ファイルを使って複数のコンテナを
まとめて、かつ簡易に扱うことが可能になります。
docker-composeの設定ファイル
docker-composeの設定ファイルはYAML書式で記載されており、
可読性が高いことも利点です。
例として、Redmineを起動する設定ファイルを提示します。
これはDBとしてmysqlを利用し、mysqlのデータはBusyBoxに保存するというものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[Server]$ cat docker-compose.yml dev: image: busybox container_name: mysql_data volumes: - /var/lib/mysql mysql: image: sameersbn/mysql environment: - DB_USER=****** - DB_PASS=****** - DB_NAME=bitnami_redmine volumes_from: - dev ports: - "3306:3306" redmine: image: sameersbn/redmine:2.5.1 links: - mysql:mysql environment: - TZ=Asia/Tokyo - REDMINE_PORT=80 - DB_USER=******* - DB_PASS=******* - DB_NAME=bitnami_redmine ports: - "80:80" volumes: - /srv/docker/redmine/redmine:/home/redmine/data |
煩雑な設定が綺麗な形でまとまるのがおわかりいただけるかと思います。
docker-composeの導入
docker-composeのインストール手順についてはDocker公式にて記載があります。
https://docs.docker.com/compose/install/
見ていただければわかるとおりに至極簡単です。
1 2 3 4 5 6 |
[Server]$ curl -L "https://github.com/docker/compose/releases/download/1.8.1/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose [Server]$ chmod +x /usr/local/bin/docker-compose [Server]$ docker-compose --version docker-compose version: 1.8.1 |
これでdocker-composeコマンドが実行出来るようになります。
あとは実行したい設定ファイルが存在するディレクトリにて
docker-composeコマンドを実行するだけです。
たとえばコンテナを起動する場合であれば
1 |
[Server]$ docker-compose up -d |
という形で実行すればコンテナ群が起動します。
逆に終了する場合は
1 |
[Server]$ docker-compose stop |
という形で実行すれば、関連のコンテナ群がまとめて停止してくれます。
コンテナイメージのPullなどもおこなってくれるため、とても便利です。
まとめ
dockerの目玉は複数の機能をもったコンテナを組み合わせてサービスを構築することですが
docker-composeを利用することで、この思想に沿ったdocker運用が効率的に行えるようになります。
全体的な管理という意味でもYAMLファイルにまとまっているのが大きな利点だと考えます。
ガリガリとdockerを使っていきたい場合には必須の機能かと思いますので
是非、お試しください。