カラクリスタ

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

サーバの環境構築のテストはCoreOSのVMを使うといい感じだと思う

概要: と思う理由を簡素に書く


1. CoreOS と Docker に関する簡単な説明

1.1 Docker とは?

  • Docker とは:

  • Docker 社(元 dotCloud 社)が開発しているオープンソースの軽量 Linux コンテナ管理ソフトウェア

  • 技術的には LXC と aufs を組み合わせて、Go 言語で実装してる
  • VM と違い、Linux の軽量コンテナを使うので、イメージの作成と破棄が超簡単
  • つまり、使い捨て(CI Server とか DevOps のテストとか)にはもってこいの環境
  • あと最近徐々に Docker エコシステムみたいなのが出来てきてて、Docker を使う PaaS とかが出始めてるもよう

1.2 CoreOS とは?

  • CoreOS とは:

  • 分散サーバ環境の構築を目的として開発されている Linux

  • 中身としては Linux kernel + systemd + docker + docker を使うための utilities みたいな感じ。ちなみに Gentoo ベース
  • 基本的に CoreOS はシステムは Read-only。ソフトウェア追加できない。あとアップデートが自動。
  • それと Alpha な間は Chaos Monkey によってたまに自動再起動したりする
  • あと色々と分散環境で使いやすいようにソフトウェアが追加されてるものの、開発中なのですべてがそろっている訳ではない

2. 何故サーバ環境構築のテストを CoreOS(Docker)を使うと良いと思うか

  1. CoreOS のシステムはパッケージ追加とか出来ないので、システムを汚す心配がない
  2. また、開発環境は Docker に押し込めるので、いじり倒しておかしくなっても、リセットするのが簡単
  3. またDockerfileを使えば、コンテナの Bootstrap が容易にでき、いつでも前と同じ環境を容易できる
  4. あと VM と違ってコンテナなので、起動とかちょっぱや。
  5. ちなみに CoreOS VM の起動 / 終了もちょっぱや。 一瞬で VM が起動する

3. CoreOS を使う上で考慮すべき点

  1. まだ開発途上。不具合が有っても泣かない
  2. Chaos Monkey がたまに暴れる。そして再起動
  3. CoreOS を基盤とした大規模分散環境構築インフラ実装とかはまだ無い
  4. 本番環境で使うとか行ったら勇者扱いされる
  5. 日本語のドキュメントなんて無い。あと English な Blog Entry とかもあんまりない

4. CoreOS と Docker を使った開発の流れと Tips

4.1 大体の流れ

  1. CoreOS の VM を立ち上げる
  2. ローカルの開発環境でDockerfileと関連ファイルを用意する
  3. rsync使って CoreOS の VM に開発ファイルを流し込む
  4. CoreOSVM にログインして$ docker build .
  5. 上手に焼けました〜♪

4.2 開発中の Tips

  1. デーモンを動かすときはフォアグランド動作させるべし

  2. そうじゃないと Docker のコンテナが終了する

  3. 動作テストとかするときは、Bashを実行してコンテナにログインしてから手動でデーモン起動とかするとデバッグが楽

  4. あと Docker のコンテナは Linux コマンド感覚で使えたりする
  5. 基本的に、CoreOS VM にファイル流し込むときは、rsync使った方が柔軟にファイルを流し込める。scpはびみょい
  6. ちなみに CoreOS の Live ISO とか作りたい方は、こちらの記事をどうぞ

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

5. というわけで以上

もうそろそろ寝る時間なのですが、 なんとなく書きたかったので書いてみました。

僕は、個人的には CoreOS は推しです。 なんというか、未来のサーバはこういう感じになってるんだろうなー、 というのを感じる。

まあそういう事で。僕は寝ます。おやすみ〜。

FIXME