CoreOSで遊ぶ(その1:とりあえずインストール)

この記事はぴょこりんクラスタ:Re Advent Calendar 2016 - Adventarのために書いたものです。

サマリ

Chinachu + Mirakurunをコンテナで入れられることにいたく感動したので、 コンテナの勉強をするべくCoreOSを入れて遊んでみたという話。

CoreOSとは何か

コンテナを動かすためだけのLinuxディストリビューション。 アプリケーションは基本的にコンテナに放り込んで動かすという思想の元、 OS自体をものすごく薄くしたもの、だと思う。

まだあまりよくわかってないけど、ほぼ全部コンテナで動くということは、 面倒なバージョン依存地獄から解放されるんだという期待で膨らみますね。

遊んでいる環境

Windows上のVirtualboxにCoreOSを入れている。

インストール

まずはじめに、ISOファイルをhttps://coreos.com/os/docs/latest/booting-with-iso.htmlから落としてくる。 VirtualboxにはもちろんCoreOS用の設定はないので、Other Linux(64bit)を選び、メモリを1GB以上にする。

立ち上げると普通にコンソールが出てくるので、公式のInstalling to Diskに従い、インストールすればOK。 Virtualboxの画面からやろうとすると、英語配列キーボードのせいでやりにくくて仕方ない上にキー配列が変えられないので、 PuTTYとかからsshしたほうが楽でよい。

$ sudo passwd core # デフォルトユーザは"core"なので、coreのパスワードを設定してやるとsshで入れる
$ ifconfig # IP確認して、以後sshクライアントからログインして実施

$ sudo su - 
$ vi cloud-config.yaml
$ coreos-install -d /dev/sda -c cloud-config.yaml -C beta #せっかくなのでbetaくらい入れてみる。alphaを入れる度胸はなかった。

cloud-config.yamlは最低限ssh_authorized_keysを設定しておけばいいんだけど、ユーザくらいは追加しておくようにする。 ユーザも最低限groupと公開鍵さえ登録しておけばいいと思う。パスワードは公開鍵登録しておけば不要。

先頭行の#cloud-configはおまじないで、これがないと受け入れてもらえないので注意。あと、よく先頭の-を忘れるので注意。

#cloud-config

ssh_authorized_keys:
  - ssh-ed25519 ......

users
 - name: "bisco"
   groups:
     - "docker"
     - "sudo" 
   ssh-authorized-keys:
     - "ssh-ed25519 ....."

インストールが終わると、リブートして再度立ち上がってくる。ISOファイルを外すのを忘れやすいし、現に僕は忘れてた*1

Hello Worldする

動作確認といえばHello Worldだよね。ダウンロード時間が短くてすむbusyboxコンテナでHello Worldしてみよう。 手元にイメージがなくても、勝手にstore.docker.com(たぶん・・・)から落としてきてくれるので、気にせずrunすればいい。

bisco@core ~ $ docker run busybox /bin/echo "hello world"
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
56bec22e3559: Pull complete
Digest: sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912
Status: Downloaded newer image for busybox:latest
hello world

なお、原則として、Dockerコンテナ1つにつき1プロセスしか動けないので、サービスを複数動かそうとすると失敗する。 複数プロセス動かすときはsupervisordとかいれる必要がある。

次は?

これだけだとCoreOS試した意味があまりないので(単にdockerでコンテナ作っただけだし)fleetとかetcdを試してみる。

*1:勝手に外れてくれないというあれ