Posted at

docker-machineでRancherOSを立ちあげる

More than 1 year has passed since last update.


docker-machineとそのメリット

docker-machineは仮想マシン上にDocker Engineをインストールするツールです。

docker-machineコマンドを使用することで、Dockerホストを作成・管理することが可能です。

docker-machineを使用してDockerホストを作成すると、

$ docker-machine env <MACHINE_NAME>

でシェル評価可能なDocker接続情報を得ることができ、

$ eval $(docker-machine env <MACHINE_NAME>

とすることにより、そのセッション内ではあたかもローカル環境のDockerの様にコンテナを操作することが可能となります。


docker-machineで使用するOS

扨、通常docker-machineでDockerホストを作成すると、インストールされるOSはBoot2Dockerですが、docker-machineでは、ホスト作成時のコマンドラインオプションでisoイメージやシェルスクリプトを指定することでOSやDocker Engineのバージョンを変更することができます。


RancherOS

Boot2Dockerに類似したOSとして、RancherOSがあり、rosコマンドを使用することでインストール後でもDockerのバージョンを簡単に切り替えることができます。

RancherOSは以前、仮想マシン環境のサポートとして、Vagrant用の環境を提供していましたが、現在(2017年8月)では、すでにサポートが終了しており、docker-machineを使用するようにというアナウンスが出ています。

そこで、今回はdocker-machineを使用してRancherOSを立ちあげてみようと思います。


docker-machineでRancherOSを立ちあげる

公式ドキュメント上に示されたコマンドをそのまま使用しても、途中でエラーが出てしまい(エラーが出ること自体は記述されていますが)、docker-machineをの大きなメリットである、docker-machine envが使用できません。

エラーを回避するためには、Rancherのリポジトリ上にあるインストールスクリプトを指定します。

$ docker-machine create -d virtualbox --virtualbox-boot2docker-url https://releases.rancher.com/os/latest/rancheros.iso --engine-install-url https://raw.githubusercontent.com/rancher/install-docker/master/17.06.sh

インストールが完了したら、docker-machine lsコマンドで実行中のDockerホストの一覧を表示することができます。

$ docker-machine ls

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
ros - virtualbox Running tcp://192.168.99.100:2376 v17.06.0-ce


Docker Engineのバージョンを切り替える

せっかくRancherOSを使用しているので、Docker Engineのバージョンを切り替えてみましょう。

Docker Engineのバージョンを切り替えるにはRancherOS上でrosコマンドを使用するのでした。

RancherOSはdocker-machineで作成されたVM上で動作していますので、以下のコマンドを用いてログインします。

$ docker-machine ssh <RANCHEROS_VM_NAME>

Vagrantを使用したことがある方はなじみやすいかもしれません。

SSHログインできたら、以下のコマンドで使用可能なDocker Engineのリストを表示します。

$ sudo ros engine list

disabled docker-1.10.3
disabled docker-1.11.2
disabled docker-1.12.6
disabled docker-1.13.1
disabled docker-17.03.1-ce
disabled docker-17.04.0-ce
disabled docker-17.05.0-ce
current docker-17.06.0-ce

disabledと表示されているものが使用可能なDockerのバージョン、currentと表示されているものが現在使用中のDockerのバージョンです。

今回は、1.12.6に変更してみましょう(Kubernetesがサポートしているバージョンです))

Dockerのバージョンを切り替えるには、以下のコマンドを使用します。

$ sudo ros engine switch <DOCKER_VERSION>

今回は1.12.6に変更したいため、以下の様にします。

$ sudo ros engine switch docker-1.12.6

実行し終わり、docker versionコマンドでバージョンが変更されたことを確認されたら、CTRL-dでログアウトし、docker-machine lsでもバージョンを見てみましょう。

$ docker-machine ls

NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
ros - virtualbox Running tcp://192.168.99.100:2376 v1.12.6

docker-machineから見えているバージョンもきちんと変更されていることがわかりました。


まとめ

docker-machineを使用することで、ローカル環境に簡単に複数のDockerホストを作成することができます。docker-machineにはドライバを選択するオプションもあり、Virtualbox以外にもvmware fusionxhyve/hyperkitなどのローカル仮想マシン環境、Amazon Web ServiceMicrosoft AzureGoogle Cloud Platformなどのクラウド環境にDockerホストを構築することも可能です。