概要: Digital Ocean の Ubuntu with Docker で鯖管理するようにした
ここ最近、自分が課金してるサーバとか Web サービスの見直しをしてて、 Monthly or Yearly の支払い額が減るように調整してました。
で、その際に、znc
とかlingr-ircd
とかを動かしていた、
と、静的なファイルのホストをしていた、
http://www.gehirn.jp/rs2.htmlGehirnRS2
の運用を、Digial Ocean 側に集約して Gehirn の RS2 は解約したんだけど、 その集約の鯖構築の際、Web サーバとか各種デーモンを、 VPS 本体の側で動かさずに、
のコンテナに Web サーバなり ZNC なりを隔離して、 サーバのデーモン類を構成したので、 今日はその辺り書いてみようと思います。
Digial Ocean の構成
Instance に対して行った初期設定
- 運営用ローカルユーザーの作成、及び root アカウントの無効化
- ローカルユーザーで
sudo
を使えるように、/etc/sudoer.d/
へ設定を追加 sshd
のパスワード認証と PAM の無効化、及び Listen Port の変更$ apt-get update && apt-get upgrade
# セキュリティアップデート等$ apt-get install lxc-docker
# 最近の Docker をインストール
実際に運用している Docker コンテナを作る際に行ったコト
まず、ローカルでの Dockerfile のテストに関しては、 VMware Fusion 上に自前でインストールした、
を使いました。
で、あと今回作った Dockerfile と、その関連ファイル一式は、 Github 上の、下記で公開しています:
- Web サーバ: nyarla-websites/minya.nyrlb.com
- ZNC IRC Bouncer: boxelly/docker-znc
- Lingr-ircd (mattn さん製): boxelly/docker-lingr-ircd
で、まあ実際開発する際にやったコトと言えば、
- 自分の作りたい Dockerfile と、似たようなコトをしている Dockerfile を探す
- 探し当てた Dockerfile を参考に、自分の Dockerfile を書く
- Dockerfile を書き終えたら、CoreOS なりで Dockerfile のテストを行う
- 動作確認を終えたら、本番環境に deploy する
という感じです。
それで、今回、
- Dockerfile 書いたり
- Docker のコンテナをビルドしたり
- あるいはコンテナを
upstart
で管理したり 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/統一言語メーカー
を作り直したりしてました。
特に統一言語メーカーに関しては、 ずっと前にサイトがダウンしたまま放置してたんですが、 今回、
- http://angularjs.org/
- https://github.com/shogo82148/TinySegmenterMaker で作った
tinysegmenter.js
- http://fontawesome.io/
辺りを使って、全面書き直しとかしました。 というか以前は Perl を使って動的に結果を返したりしてたんですが、 今回から Javascript だけで完結する静的ページになりました。 なので、サーバサイドが不要になったという。 あと angular.js たのしいれす(^q^)
で、 nyarla.net と Nyarlabo! のペラサイトも、現状とそぐわない所とか、 あるいは表現が微妙という所もあったので、 これらも全面書き直しとかしました。 まあスタイルシートとかはそのまま流用してますけどね(><;)
今回 Docker を使って鯖構築した感想
細かいノウハウに関してはさっきも書いた通り、 あとで Qiita の方にまとめたいとおもってますが、 Docker 使って鯖構築する場合、
_人人人人人人人人人人人人人人人_ > コンテナの作り直しが超簡単 <  ̄ YYYYYYYYYYYYYY  ̄
なのが超便利で、普通サーバの設定ファイルとかを直接いじってる場合、 ちょっとミスったのでやり直したい! と思っても色々と面倒だったり、 あるいは複数のデーモンが絡まり合って、 スパゲッティーのようにサーバがゆで上がった! とかあるとおもうんですが、 Docker 使うとそれがコンテナに隔離されるし、 もし作ったコンテナがおかしくなったら、 Docker 経由でコンテナを捨てるだけで環境のリセットが行えるので、 今回、その辺りが非常に楽でした。
ただ、Docker 自体はまだ開発途上の段階で、さすがに Production Ready では無いと思うので、本番環境を Docker で構築するのは、 まだちょっとリスキーというか、個人用途ならお k だけど、 起業とかが積極的に本番環境にぶっ込む、というは、 まあチャレンジャー以外はまだやめておいた方がいいんでね? とか思います。
あと、この辺りの、実務経験者による Docker の評価、 というお話に関しては、 @miyagawa さんの PodCast、 Rebuild の、
Rebuild: 14: DevOps with Docker, chef and serverspec (naoya, mizzy) 公開日: 2013-06-22
Rebuild: 25: Immutable Infrastructure (Naoya Ito, Gosuke Miyashita) 公開日: 2013-11-07
というエピソードで話題になってたので、 もしよかったらそっちを聴いてみるのも一つの手かと思います。
という感じで、今回は、自分の管理する鯖を、
に集約し、その環境構築の際に、
を使っみた、というお話でした。
まあ今回得たノウハウはとっと Qiita にまとめろよふぁっきん! と自分でも思うのですが、とりあえず面倒なので後回しです(><;)
でもまあ本当、Docker 便利だし、あと Docker のテスト環境として、
も本当に便利なので、まだ一回も使ってみた事がない人は、 一度 Docker とか CoreOS とか使ってみると良いと思います。
ちなみに CoreOS の Live ISO の作り方は、
http://the.nyarla.net/post/66266272473CoreOS の Live ISO 作る bash script を書きました - 空繰再繰
で、紹介してるので、CoreOS の Live ISO を作る際はそっちを参照してもらえれば。
というワケで、今日の記事はこんな感じで終わりにしたいと思います。 お読みいただいてありがとうございました。
ノシ