Dockerでサーバーを立てる(1)
はじめに
様々なところで語られていますが、Dockerはコンテナ型のサーバー仮想化のエコシステムとして知られている。ここでは、DockerでRailsアプリを立てることを目標とする。
大まかな概略をつかむには以下のページが参考になった。
Dockerについての調査まとめ、基本機能+主な特徴+Vagrantの連携 あたり · GitHub
細かなtips
具体的な構成は次に譲るとして、ここでは細かいtipsや周辺技術を書き留めておくこととしたい。
モニタリング
モニタリングツールは群雄割拠していてどれを選ぶかは難しいが、ここでは
これを利用して、コンピュータ上でどのコンテナが立っているかをモニタリングする。
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui
一度立てた後は
docker start dockerui
で起動可能。
コンテナ内に入る
docker exec -it nginx bash
supervisordを使う
本来のdocerは1コンテナ1プロセスが基本ですが、複数プロセスを立ち上げたいことがあるかもしれません。 そのときにこれを使います。
実際にそれを使ってRoR4のコンテナを立ち上げた例がこちら。
データボリュームについて
しばしばbusyboxなどでデータボリュームコンテナを立てて、その上にマウントした設定ファイルやログ用のフォルダをsqlやnginxなどのコンテナで共有するパターンがあります。こうすることで、ログ等を永続化できます。
そのとき、dockerコマンドのオプションをどう設定するかのtipsが、以下にまとまっています。
sshdを立てる
dockerでsshdを立てることはどうなのよ、という意見もありますが、立てている例があります。
gentoo/stage3-amd64でemergeする
docker run -v /home/#{name}/gentoo:/usr/portage/ -it gentoo/stage3-amd64 bash
みたいにすれば、emergeコマンドによるrsyncを永続化できます。これでDocker上で手軽にGentoo LinuxのPortageシステムを体験することができます。