Docker Swarmを使い始めた

Dockerはローカルでの開発でよく使っている。ただデプロイとなると、Herokuを使ったり、dokkuを使ったり、はたまたコンテナ技術無しにサーバで直にアプリケーションを実行したりしている。

せっかくDockerにSwarmという便利な機能があるのだから、使おうと思った。

学ぶのには以下を参考にした。

https://docs.docker.com/get-started/

Dockerが何たるか、からDocker SwarmやDocker Deployまで学べるので、丁度良かった。Part3辺りから知らなかったので、以下に知見を記す。

まずはデプロイしたいサービスのDocker Imageと、docker-compose.ymlを書く。

Docker ImageはDockerHubだったり自前のレジストリサーバに上げておく。

docker-compose.ymlにはサービスのとこにdeployというキーを書き、そこにswarmで展開した際のコンテナの総数だったり、リソースの制限だったりを書く。

docker-compose.yml

Docker Swarm clusterをローカルで試すために、VirtualBoxを使用する。

再起動すると、VirutalBoxが使えるようになる。

docker-machineを使って、tinylinux(docker入り)のVMを作成、管理できるようにする。

swarm clusterを構築する

ローカルに環境変数を食わせて、dockerがmyvm1をイジれるようにする

これでVMのIP(どちらでも可)でブラウザからアクセスすると、自分が書いたアプリケーションがVMの中で動いているのを確認できる。感動!接続先のコンテナは接続する度に変わるが、その仕組み(順番だったりランダムだったり)は設定で変えられる。

運用

学内で運営しているRailsのサービス(サーバ2, 3台)を、Docker Swarmで管理する。たかだか2, 3台なのだが、現状は1台のみ、Apache+Passengerで動いていて、Infra as Codeになっていない→簡単に冗長な構成にできないので厳しい。

そこでDockerとDocker Swarmを導入することで、サクッとプロセス増やしたりできるようになるし、他のサーバやPaaSに移行したりできるワケ。もうDocker Imageはできたし、期を見てDocker Swarmやっていくぞ。

コメントを残す

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください