カラクリスタ

「輝かしい青春」なんて失かった人のブログ

個人用途のVPSの管理をDockerベースにした

概要: Digital Ocean の Ubuntu with Docker で鯖管理するようにした


ここ最近、自分が課金してるサーバとか Web サービスの見直しをしてて、 Monthly or Yearly の支払い額が減るように調整してました。

で、その際に、zncとかlingr-ircdとかを動かしていた、

Digital Ocean

と、静的なファイルのホストをしていた、

http://www.gehirn.jp/rs2.htmlGehirnRS2

の運用を、Digial Ocean 側に集約して Gehirn の RS2 は解約したんだけど、 その集約の鯖構築の際、Web サーバとか各種デーモンを、 VPS 本体の側で動かさずに、

Docker

のコンテナに Web サーバなり ZNC なりを隔離して、 サーバのデーモン類を構成したので、 今日はその辺り書いてみようと思います。

Digial Ocean の構成

  1. OS: Docker with Ubuntu 13.04 x64
  2. Instance: 512MB/1CPU/20GB SSD/1TB transfer
  3. Region: San Francisco 1

Instance に対して行った初期設定

  1. 運営用ローカルユーザーの作成、及び root アカウントの無効化
  2. ローカルユーザーでsudoを使えるように、/etc/sudoer.d/へ設定を追加
  3. sshdのパスワード認証と PAM の無効化、及び Listen Port の変更
  4. $ apt-get update && apt-get upgrade # セキュリティアップデート等
  5. $ apt-get install lxc-docker # 最近の Docker をインストール

実際に運用している Docker コンテナを作る際に行ったコト

まず、ローカルでの Dockerfile のテストに関しては、 VMware Fusion 上に自前でインストールした、

CoreOS

を使いました。

で、あと今回作った Dockerfile と、その関連ファイル一式は、 Github 上の、下記で公開しています:


で、まあ実際開発する際にやったコトと言えば、

  1. 自分の作りたい Dockerfile と、似たようなコトをしている Dockerfile を探す
  2. 探し当てた Dockerfile を参考に、自分の Dockerfile を書く
  3. Dockerfile を書き終えたら、CoreOS なりで Dockerfile のテストを行う
  4. 動作確認を終えたら、本番環境に deploy する

という感じです。

それで、今回、

  1. Dockerfile 書いたり
  2. Docker のコンテナをビルドしたり
  3. あるいはコンテナをupstartで管理したり
  4. git subtreeを使ってみたり

をした関係で、色々とノウハウというか、 注意点とか設定のポイントとかがつかめたんですが、 この辺りに関しては、また後日、

にまとめたいと思ってます。

今回こっそりとリニューアルした Web サイト

で、今回、Gehirn でホストしていた Web サイトを引っ越すに辺り、

http://nyarla.net/Naoki OKAMURA (Nyarla) - nyarla.net http://www.nyarlabo.com/Nyarla's Tech Laboratory - Nyarlabo! http://godowordmaker.com/統一言語メーカー

を作り直したりしてました。

特に統一言語メーカーに関しては、 ずっと前にサイトがダウンしたまま放置してたんですが、 今回、

  1. http://angularjs.org/
  2. https://github.com/shogo82148/TinySegmenterMaker で作ったtinysegmenter.js
  3. http://fontawesome.io/

辺りを使って、全面書き直しとかしました。 というか以前は Perl を使って動的に結果を返したりしてたんですが、 今回から Javascript だけで完結する静的ページになりました。 なので、サーバサイドが不要になったという。 あと angular.js たのしいれす(^q^)

で、 nyarla.netNyarlabo! のペラサイトも、現状とそぐわない所とか、 あるいは表現が微妙という所もあったので、 これらも全面書き直しとかしました。 まあスタイルシートとかはそのまま流用してますけどね(><;)

今回 Docker を使って鯖構築した感想

細かいノウハウに関してはさっきも書いた通り、 あとで Qiita の方にまとめたいとおもってますが、 Docker 使って鯖構築する場合、

_人人人人人人人人人人人人人人人_ > コンテナの作り直しが超簡単 <  ̄ YYYYYYYYYYYYYY

なのが超便利で、普通サーバの設定ファイルとかを直接いじってる場合、 ちょっとミスったのでやり直したい! と思っても色々と面倒だったり、 あるいは複数のデーモンが絡まり合って、 スパゲッティーのようにサーバがゆで上がった! とかあるとおもうんですが、 Docker 使うとそれがコンテナに隔離されるし、 もし作ったコンテナがおかしくなったら、 Docker 経由でコンテナを捨てるだけで環境のリセットが行えるので、 今回、その辺りが非常に楽でした。

ただ、Docker 自体はまだ開発途上の段階で、さすがに Production Ready では無いと思うので、本番環境を Docker で構築するのは、 まだちょっとリスキーというか、個人用途ならお k だけど、 起業とかが積極的に本番環境にぶっ込む、というは、 まあチャレンジャー以外はまだやめておいた方がいいんでね? とか思います。

あと、この辺りの、実務経験者による Docker の評価、 というお話に関しては、 @miyagawa さんの PodCastRebuild の、

というエピソードで話題になってたので、 もしよかったらそっちを聴いてみるのも一つの手かと思います。


という感じで、今回は、自分の管理する鯖を、

Digital Ocean

に集約し、その環境構築の際に、

Docker

を使っみた、というお話でした。

まあ今回得たノウハウはとっと Qiita にまとめろよふぁっきん! と自分でも思うのですが、とりあえず面倒なので後回しです(><;)

でもまあ本当、Docker 便利だし、あと Docker のテスト環境として、

CoreOS

も本当に便利なので、まだ一回も使ってみた事がない人は、 一度 Docker とか CoreOS とか使ってみると良いと思います。

ちなみに CoreOS の Live ISO の作り方は、

http://the.nyarla.net/post/66266272473CoreOS の Live ISO 作る bash script を書きました - 空繰再繰

で、紹介してるので、CoreOS の Live ISO を作る際はそっちを参照してもらえれば。

というワケで、今日の記事はこんな感じで終わりにしたいと思います。 お読みいただいてありがとうございました。

ノシ

FIXME