CoreOSで遊ぶ(その1:とりあえずインストール)
この記事はぴょこりんクラスタ:Re Advent Calendar 2016 - Adventarのために書いたものです。
サマリ
Chinachu + Mirakurunをコンテナで入れられることにいたく感動したので、 コンテナの勉強をするべくCoreOSを入れて遊んでみたという話。
CoreOSとは何か
コンテナを動かすためだけのLinuxディストリビューション。 アプリケーションは基本的にコンテナに放り込んで動かすという思想の元、 OS自体をものすごく薄くしたもの、だと思う。
まだあまりよくわかってないけど、ほぼ全部コンテナで動くということは、 面倒なバージョン依存地獄から解放されるんだという期待で膨らみますね。
遊んでいる環境
Windows上のVirtualboxにCoreOSを入れている。
- Windows 10 Pro (x64)
- Virtualbox 5.1.10
- CoreOS(Beta Channel)
インストール
まずはじめに、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:勝手に外れてくれないというあれ