Edited at

CTOからの年末年始の宿題:Rancherでdocker管理体験

More than 3 years have passed since last update.


CTOからの年末年始の宿題Rancherでdocker管理体験(30分)

前回の記事でrancherのvagrantのboxをダウンロードしてrancherを簡単に動かしてみるというとこはやりましたが、本格的にrancherを使ってみるために、vagrantにubuntu14.04からVMを作り、rancherを動かしてみましょうというネタを共有したいと思います。

docker_rancher.png

自分の手元の開発環境ではこのようにvagrantとdockerを上手く使い分けをしています。

時間もそれほどかからないので、年末年始の宿題にはもってこい。

アプリばっか書いてて、インフラ少し弱いわって人、dockerを触るチャンスですよ〜

※図では1コンテナに複数サービス書いちゃってますが、1コンテナ1サービスが鉄板構成です。ここについてはまたどっかで記事にあげようと思います。


vagrantに元になるubuntuを構築する

docker管理の基盤にはubuntuをベースに構築していきます。


vagrantでdocker入りのubuntuのboxをダウンロードする

ubuntuにdockerを自分で入れるのもいいのですが、簡略化のためにdocker入りを使用することにします。以下のコマンドでboxを追加しましょう。


box追加

$ vagrant box add ubuntu14_04_docker https://github.com/jose-lpa/packer-ubuntu_14.04/releases/download/v2.0/ubuntu-14.04.box


box確認

$ vagrant box list

ubuntu14_04_docker (virtualbox, 0)


vagrantでVMホストを構築

今回は「Vagrantfile」でマルチホスト構成としてみたいと思います。Vagrantfileのあるフォルダを都度移動する手間も省けるので自分はいつもプロジェクトごとにVafrantfileのマルチホスト構成を作るようにしています。


Vagrantfile作成

vagrantのVM同士で通信可能という形で構築します。

メモリは1024MBでIPは以下の通りを想定してVagrantfileを作っています。


  • docker-rancher


    • IP:192.168.50.201



  • docker-host1


    • IP:192.168.50.202



※必要に応じ変更するようにしてください。

$ mkdir docker_dev

$ cd docker_dev
$ vi Vagrantfile


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.define "docker_rancher" do |v|
v.vm.box = "ubuntu14_04_docker"
v.vm.network :forwarded_port, host: 9201, guest: 80
v.vm.network "private_network", ip: "192.168.50.201",virtualbox_inet:"test_local"

if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
end
end

config.vm.define "docker_host1" do |v|
v.vm.box = "ubuntu14_04_docker"
v.vm.network :forwarded_port, host: 9202, guest: 80
v.vm.network "private_network", ip: "192.168.50.202",virtualbox_inet:"test_local"

if Vagrant.has_plugin?("vagrant-cachier")
config.cache.scope = :box
end
end

config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024", "--cpus", "2", "--ioapic", "on"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
end



vagrant VM起動

「vagrant up マシン名」で起動させましょう。

※Vagrantfileをマルチ構成で設定している場合には「vagrant up」を実行すると、マルチホスト構成の記載のマシンを一気に起動できます。

$ vagrant up docker_rancher

$ vagrant up docker_host1

image


ubuntu最新化(docker-host1とdocker-rancherで作業)

docker-host1とdocker-rancherの2台のVMで作業が必要です。

$ sudo apt-get update

$ sudo apt-get install wget


dockerの最新化(docker-host1とdocker-rancherで作業)

dockerも最新としておきましょう。

$ wget -qO- https://get.docker.com/ | sh


rancher設定(docker-rancherのみ作業)

dockerを管理するオープンソースのrancherをdocker-rancher側のみ構築します。

docker_rancher1.png


docker-rancherにSSHログイン

$ vagrant ssh docker_rancher


rancherインストール

dockerコンテナを走らせるだけですが。以下のコマンドを実行するとpullされます。

sudo docker run -d -p 8080:8080 rancher/server

docker_rancher_install.gif


rancherブラウザアクセス

この手順通りだと

http://192.168.50.201:8080/」にアクセスすると管理画面にアクセス出来ます。


rancherアクセス権限設定

管理画面にアクセスすると画面上部に赤い帯の「Access Control」というリンクをクリックしましょう。取り急ぎGitHub連携しておけば問題ないと思います。Githubを選択している状態で「click here」をクリックしましょう。Githubにログイン済みであればApplicationを登録する画面が表示されていると思うのでRancherに記載されているものをコピペしていきましょう。

rancher-compressor.gif


docker hostの追加


Rancher管理画面からAdd Hosts


  1. 上部のInfrastructureからHostsに入る

  2. Add Hostsを押下

  3. Customを選択

  4. エージェントインストールのコマンドをコピペ


rancher-agentインストール

次にdocker-host1側にrancher-agentをインストールしましょう。

docker_host1.png

$ vagrant ssh docker_host1

コピペしたコマンドを実行しましょう。

rancher_add_host_new-compressor.gif


追加したホストの確認

docker_host1側でエージェントのインストールが終わった後に、管理画面上からHOSTSにアクセスすると追加したDocker ホストが追加されていることが確認出来ます。

rancher_add_host_check-compressor.gif


Dockerコンテナの追加

Rancher管理画面からdockerホストが追加されたことが確認出来たので管理画面からコンテナを追加してみましょう。

Rancher_add.png

docker_host1でしばらくするとdockerコンテナが追加されます。

container_check-compressor.gif


まとめ

独自のDocker基盤をIaasとして持つなんてことが簡単に出来るようになりました。RancherはAPIもあるので、自社インフラに組み込んで運用することも出来たりするのでおすすめです。年末年始のおもちゃにどうぞ!


おまけ

Dockerホストを登録した後であれば、APPLICATIONSのCATALOGというメニューからポチっとおせば、予め用意されているテンプレートからすぐに環境をデプロイ出来たりします。jenkins-ciやkibana、Elasticsearchなどもあったりするので暇があればポチってみてください。数分ですぐに環境が出来上がっちゃいます。

jenkins-compressor.gif

Launchってポチるだけで数分後にはdockerホストにStack(コンテナのセット)が以下のように作られます。

image

手順通り進んだ場合は「http://192.168.50.202:8080/」にアクセスするとjenkinsおじさんとご対面です。

image