Docker Composeとは
「複数のDockerコンテナを、諸々の設定含め一発で一気に起動できちゃうよ」な便利道具
いくつかのDockerコンテナを立ち上げて環境構築しようと思った時に毎回docker runで全部立ち上げるのは大変です。
そんな時にまさに指揮者(Composer)のようにコンテナを自由自在に扱えるようにしてくれるのがDocker Composeです!
Docker Composeの使い方
Docker Compose起動!!
と言っても起動はしてくれません。
docker-compose.yml
(もしくはdocker-compose.yaml)
というファイルに設定をつらつら書いていきます。
なんだ、スクリプトファイル書くのと変わらんやん、と思うかもしれません。
正直僕も違いはそこまでわかりませんが、断然簡単です!(らしい)
僕がDockerに触れ始めた時にはもうComposeもあったので...
とりあえずdocker-compose.ymlの中身を見ていきましょう!
docker-compose.yml
services:
fabric-ca:
image: hyperledger/fabric-ca
ports:
- "7054:7054"
volumes:
- ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
container_name: fabric-ca
networks:
- basic
couchdb:
container_name: couchdb
image: hyperledger/fabric-couchdb
environment:
- COUCHDB_USER=xxx
- COUCHDB_PASSWORD=xxx
ports:
- 5984:5984
networks:
- basic
こんな感じです。
Hyperledger Fabricのfabcarサンプルで使うファイルを省略してみました。
dockerを使ったことがあると大体掴めると思います。
servicesがそれぞれのコンテナで、その下の階層でオプションを指定します
image でイメージを指定
ports でホストのポートと対応するコンテナのポートを指定
volumes でホストのディレクトリとコンテナ内のディレクトリをマウント
container_name で名前を設定。コンテナIDを使わなくても名前でアクセスできるようになったりしてわかりやすい。
environment でコンテナ内の環境変数をセットできる。
networks でコンテナをどのネットワークに置くか指定できる。デフォルトだとおそらくbridgeネットワークです。
他にもdockerコマンドのオプションに対応するものは大体あると思います。
オプションの順番がfabric-caとcouchdbでバラバラなのが少し気持ち悪いですが、まあこんな風に適当にもかけちゃうよってことですね。
docker-composeコマンド
docker-compose.ymlファイルが書けたらもうほとんど終わりです!
あとはコマンドを打ち込む!
下記はいくつかよく使うコマンドです
#コンテナ全部起動
docker-compose up
#デタッチドモードでバックグラウンドで起動
docker-compose up -d
#コンテナ全部終了
docker-compose stop
#コンテナを全削除
docker-compose rm
#コンテナのログを出力
docker-compose logs
他にも色々あります
先ほどのドキュメントやヘルプをご参照ください!
まとめ
Docker Composeが便利だよと言うお話でした。
昔はローカルでシステムの環境構築するのに数日かかることもあったとか、なかったとか。
便利な世の中になりました。
先人達に感謝。
今度は最近話題のKubernetesについても勉強してまとめてみたいと思います。
Kubernetesについてよく出てくるワードが
「コンテナオーケストレーション」
オーケストラのように調和のとれた秩序ある環境を構築するということなのでしょうか。
指揮者のさらに上をいく技術っぽそうな感じがプンプンしてきます。
楽しみです。