備忘録 blog

Docker/Machine Learning/Linux

Dockerでサーバーを立てる(1)

はじめに

様々なところで語られていますが、Dockerはコンテナ型のサーバー仮想化のエコシステムとして知られている。ここでは、DockerでRailsアプリを立てることを目標とする。

大まかな概略をつかむには以下のページが参考になった。

Dockerについての調査まとめ、基本機能+主な特徴+Vagrantの連携 あたり · GitHub

細かなtips

具体的な構成は次に譲るとして、ここでは細かいtipsや周辺技術を書き留めておくこととしたい。

モニタリング

モニタリングツールは群雄割拠していてどれを選ぶかは難しいが、ここでは

github.com

これを利用して、コンピュータ上でどのコンテナが立っているかをモニタリングする。

docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui

一度立てた後は

docker start dockerui

で起動可能。

コンテナ内に入る

qiita.com

docker exec -it nginx bash

supervisordを使う

本来のdocerは1コンテナ1プロセスが基本ですが、複数プロセスを立ち上げたいことがあるかもしれません。 そのときにこれを使います。

qiita.com

実際にそれを使ってRoR4のコンテナを立ち上げた例がこちら。

qiita.com

データボリュームについて

しばしばbusyboxなどでデータボリュームコンテナを立てて、その上にマウントした設定ファイルやログ用のフォルダをsqlやnginxなどのコンテナで共有するパターンがあります。こうすることで、ログ等を永続化できます。

そのとき、dockerコマンドのオプションをどう設定するかのtipsが、以下にまとまっています。

qiita.com

sshdを立てる

dockerでsshdを立てることはどうなのよ、という意見もありますが、立てている例があります。

qiita.com

docs.docker.com

gentoo/stage3-amd64でemergeする

docker run -v /home/#{name}/gentoo:/usr/portage/ -it gentoo/stage3-amd64 bash

みたいにすれば、emergeコマンドによるrsyncを永続化できます。これでDocker上で手軽にGentoo LinuxPortageシステムを体験することができます。