VirtualBox上の仮想マシンにCoreOSをインストールする

2014年07月07日 18時58分

201407071858VDOW00.png

はじめに

CentOS 6.5にDockerをインストールするでは、Vagrant上のCentOSDockerをインストールしました。この方法では、VirtualBox上のCentOSにDockerをインストールしているため、Dockerを起動する仮想プラットフォームとしては、やや重たいと思います。 そこで今回は、VirtualBox上の仮想マシンに、CoreOSをインストールする方法を解説します。なお、今回は仮想マシンにCoreOSをインストールしていますが、物理マシンにインストールすることもできます。

前提条件

作業の前提条件は、下記のとおりです。

ソフトウエアバージョン
OSWindows 7 Ultimate 32bit
CygwinSetup Version 2.831
VirtualBox4.3.12 r93733

CoreOSサーバの構築

Vagrantのシェルプロビジョニングを利用して、Dockerをインストールします。

  1. インストールメディアのダウンロード

    公式サイトから、BETA版のインストールメディアをダウンロードします。

    $ mkdir -p /tmp/CoreOS && cd /tmp/CoreOS
    $ wget -q http://beta.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso
    
  2. 仮想マシンの作成

    VBoxManageを使用して、空の仮想マシンを作成し、仮想マシンを起動します。
    ここでは、シェルスクリプトを作成して一気に仮想マシンを起動しています。
    なお、物理マシンにCoreOSをインストールする場合、手順3に進んで下さい。

    $ vi boot_coreos
    
    set -e
    
    VMNAME=CoreOS
    OSTYPE=Oracle_64
    HDDIMG="F:/VirtualBox/$VMNAME/$VMNAME.vdi"
    BOXIMG="F:/VirtualBox/$VMNAME/$VMNAME.vbox"
    ISODVD="D:/TEMP/CoreOS/coreos_production_iso_image.iso"
    
    # VM名の作成
    VBoxManage createvm --name $VMNAME
    # VM名の登録
    VBoxManage registervm $BOXIMG
    # VM設定の更新
    VBoxManage modifyvm $VMNAME --ostype $OSTYPE --memory 512 --acpi on --ioapic on --hwvirtex on --nestedpaging on --largepages on --clipboard bidirectional --boot1 none --boot2 disk --boot3 dvd --boot4 net --usb off --usbehci off --nic1 bridged --nictype1 Am79C970A --bridgeadapter1 'Realtek PCIe GBE Family Controller'
    # 仮想HDDの作成
    VBoxManage createhd --size 8192 --variant Fixed --filename ${HDDIMG}
    # ストレージコントローラーの追加
    VBoxManage storagectl $VMNAME --name SATA --add sata --portcount 5 --bootable on
    # 仮想HDDの割り当て
    VBoxManage storageattach $VMNAME --storagectl SATA --port 0 --type hdd --medium ${HDDIMG}
    # インストールメディアの割り当て
    VBoxManage storageattach $VMNAME --storagectl SATA --port 1 --type dvddrive --medium ${ISODVD}
    # VM起動
    VBoxManage startvm ${VMNAME}
    
    $ sh boot_coreos
    
    201407071858VDOW01.png

    仮想マシンを起動すると、i686 CPU云々というメッセージが表示されて、CoreOSが起動できませんので、一旦仮想マシンの電源をオフにします。

    201407071858VDOW02.png

    VirtualBoxのGUIから、仮想マシンの設定を開き、OSTYPEをOracle_64からRed Hat(64 bit)に変更して、仮想マシンを起動し直します。

    201407071858VDOW03.png

    201407071858VDOW04.png

    VBoxManageで仮想マシンのOSTYPEを指定しても、初回起動時にi686 CPU云々のメッセージが出てしまうため、CUIだけで起動出来ない理由については深く調べていません。

    とりあえず、インストールメディアからCoreOSが起動できたので良しとします。

    201407071858VDOW05.png
  3. coreユーザのパスワード設定

    スーパーユーザ(root)になって、coreユーザのパスワードを設定します。

    $ sudo su -
    $ passwd core
    
  4. vagrant公開鍵の設定

    公式ドキュメントにもあるとおり、CoreOSではSSH接続しか許可されていないため、リモート接続に必要なSSH公開鍵を設定します。
    今回は、Vagrantの公開鍵を取得しています。

    # curl -ksLo /tmp/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
    # chmod 0600 /tmp/authorized_keys
    
    201407071858VDOW06.png
  5. CoreOSのインストール

    CoreOSのインストーラーを取得して、内蔵ハードディスクにCoreOSをインストールします。

    # wget -q --no-check-certificate https://raw.githubusercontent.com/coreos/init/master/bin/coreos-install
    # sh coreos-install -d /dev/sda -C beta
    
    201407071858VDOW07.png
    201407071858VDOW08.png
  6. CoreOSの設定

    先に設定したcoreユーザのパスワードファイル(/etc/shadow)および、vagrant公開鍵をインストールした内蔵ハードディスクにコピーします。

    # mount /dev/sda9 /mnt
    # cp -p /tmp/authorized_keys /mnt/home/core/.ssh
    # cp -p /etc/shadow /mnt/etc
    # umount /mnt
    

    最後に仮想マシンをリブートします。

    # reboot
    
    201407071858VDOW09.png
  7. リモート接続

    仮想マシンが再起動すると、仮想マシンに割り当てられたIPアドレスが表示されますので、coreユーザでSSH接続を行います。

    $ ssh core@192.168.0.120 -i ~/.ssh/vagrant
    
    201407071858VDOW10.png

    SSH接続時に、coreユーザのパスワードを聞かれますので、設定したパスワードを指定してログインします。

    dockerがインストールされていることも確認できます。

    201407071858VDOW11.png

    内蔵ハードディスクのディスク情報

    201407071858VDOW12.png

    ブリッジインタフェースのネットワーク情報

    201407071858VDOW13.png

    コンソールから、coreユーザでログインすることも可能です。

    201407071858VDOW14.png

    以上で、CoreOSのインストールは終了です。

まとめ

今回、VirtualBox上にCoreOSをインストールしましたが、Vagrantを使用すると簡単にCoreOSを使用することができます。

$ git clone https://github.com/coreos/coreos-vagrant.git
$ cd coreos-vagrant
$ vagrant up

しかし、この方法ではVirtualBox + Vagrant + CoreOSの構成となり、VagrantのOH(オーバーヘッド)がやはり気になってしまいます。
ですから、とにかく軽量な仮想プラットフォームを作りたいのであれば

  1. 物理サーバ(AMDマシン) + CoreOS
  2. VMware ESXServer(vSphere Server) + CoreOS
  3. VirtualBox or VMware Server + CoreOS
のいずれかの方法でプラットフォームを作成すると良いでしょう。

物理サーバにCoreOSを入れる方法が一番速いとは思いますが、AMDマシンを持っていないので検証できませんが、機会があればチャレンジしてみたいと思います。