読者です 読者をやめる 読者になる 読者になる

カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

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

Development Diary

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


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

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

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

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

のコンテナに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上に自前でインストールした、

を使いました。

で、あと今回作った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サイトを引っ越すに辺り、

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

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

  1. AngularJS — Superheroic JavaScript MVW Framework
  2. shogo82148/TinySegmenterMakerで作ったtinysegmenter.js
  3. Font Awesome, the iconic font designed for Bootstrap

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

ノシ