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やっていくぞ。

nginx-proxyとdnsmasqでローカルでの名前解決

本番に似た環境をローカルに用意する時って、Docker超便利ですよね。なんなら作ったDockerイメージをそのままデプロイできますし。
dnsmasqとnginx-proxyを使って、名前解決できるようにしました。

“nginx-proxyとdnsmasqでローカルでの名前解決” の続きを読む

Fit Boxing買って、ダイエット始めた

明けましておめでとうございます。大学入って4年が経とうとしている今、椅子に座りっぱなしでキーボードカタカタしてるのが身体に悪いんじゃないかと、やっと気付きました、Isaacです。

“Fit Boxing買って、ダイエット始めた” の続きを読む

出会い系(?)を作った

この記事は,FUN Advent calendar 2018の12月25日の記事です.

“出会い系(?)を作った” の続きを読む

デレ6th メットライフドーム公演 Day1に現地参加した

アイマス最高。

“デレ6th メットライフドーム公演 Day1に現地参加した” の続きを読む

MashupAwards2018函館予選に参加しました

久しぶりにハッカソンに参加した.

“MashupAwards2018函館予選に参加しました” の続きを読む

ネットの契約を見直した話

ちゃんと調べてから契約しよう,って話.

“ネットの契約を見直した話” の続きを読む