2016年3月30日水曜日

VMwarePlayerでUbuntu Snappy Coreを動かす


VMwarePlayerでUbuntu Snappy Coreをインストール後、LXDをインストールするまでの手順です。

以下URL参照
https://developer.ubuntu.com/en/snappy/start/?_ga=1.61199852.191622956.1459234529

VMwarePlayerやESXiでUbuntu Snappy Coreを動作させるためには以下の2つが必要となります。
①OVAテンプレート
②cloud-configのisoイメージ or vmdkイメージ

①は参照URLからダウンロードします。

http://cloud-images.ubuntu.com/ubuntu-core/15.04/core/stable/current/core-stable-amd64-cloud.ova

②は別途手動作成が必要です。

 Ubuntu15.04上でコマンドラインで作成します。
 
  user-data meta-data を作成します。


$ cat >> user-data <<"EOF
#cloud-config
snappy:
    ssh_enabled: true
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
EOF

$ cat >> meta-data << EOF
instance-id: $(uuidgen)
local-hostname: ubuntu-snappy
EOF

 上記ファイルを含むiso/vmdkイメージを作成します。


$ dd if=/dev/zero of=bloat_file bs=1M count=10
$ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data bloat_file
$ qemu-img convert -O vmdk seed.iso seed.vmdk


 上記iso/vmdkファイルをWinSCP等でダウンロードします。

①でダウンロードしたovaファイルをVMwarePlayerにインポートします。(ダブルクリックするとウィザード形式で仮想マシンが作成されます。)

VMwarePlayerの「仮想マシン設定」からCD/DVDを「追加」して②で作成したisoイメージをマウントします。

Ubuntu Snappy Coreが起動します。
ユーザ名は[ubuntu]パスワードはCloud-Configファイルにて記載したパスワード(上記では[passw0rd])です。

下記コマンドでLXDをインストールします。


sudo snappy install lxd.stgraber


デフォルトでSSH有効ですね。CoreOSよりもセキュリティは低いですが使いやすそうです。

2016年3月23日水曜日

dockerでubuntuデスクトップ環境を構築

dockerでデスクトップ環境を構築、Windowsリモートデスクトップにつなぐまでのメモです。
※実用性はなさそうですが・・・。


Windows10 DockerToolBoxで構築しました

1.ubuntuコンテナを起動

docker pull ubuntu
docker run --name ubuntu-dev -it ubuntu /bin/bash

2.ubuntuコンテナでxrdp lxdeをインストール

[コンテナ]#sudo apt-get update
[コンテナ]#sudo apt-get install xrdp lxde
[コンテナ]#passwd root
[コンテナ]#[rootのパスワードを入力]
[コンテナ]#exit

3.デスクトップ環境を構築したubuntuコンテナをcommit

docker commit ubuntu-dev ubuntu-desktop

4.ポート転送して起動

docker run --name ubuntu-desktop -p 3389:3389 -it ubuntu-desktop /bin/bash

5.docker-machine ls で defaultのコンテナのIPアドレスを確認

6.[リモートデスクトップ接続]でdefaultのIPアドレスを指定して接続

7.[sesman-Xvnc]でrootでログイン

日本語ロケールの設定等が必要ですが普通にデスクトップが使えました。
コンテナのサイズは879MBと大きいです。
コンテナをGUIで操作するときに活用できるでしょうか・・・?

2016年3月14日月曜日

Docker MachineでESXiにDockerSwarmクラスタを構成する



Docker Machineを使用してESXi6.0にDocker Swarmのクラスタ環境を構築した時のメモです。

CentOSAtomicHostやらgit for Windowsやら手動で色々試してみたのですが
どうもうまくいかず、結局マニュアル通りにやって動きました・・・。

 cannot connect to the docker engine endpoint となってどうしてもマネージャとクラスタの通信がうまくいかない・・・。

 クライアントはWindows10を使用しています。

1.クライアントにDocker Toolboxをインストールします。
 ※git for Windowsからスクリプトで導入するとDockerのバージョンが1.10.2 となりSwarmの
  サポート外になります。

 https://www.docker.com/products/docker-toolbox

2.インストール後、デスクトップの「Docker Quick Terminal」を起動します。
3.VirtuabBox上にDocker-Machine用Dockerが起動します。
4.以降は下記URLを参考にESXiにDocker Swarm環境を構築します。

 https://docs.docker.com/swarm/install-w-machine/
 https://docs.docker.com/machine/drivers/vsphere/

5.ESXi上に[manager][agent1][agent2]のDocker-Machineを作成します。


 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] manager

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent1

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent2


6.下記コマンドでdocker-machineが作成され、STATEがRunningとなっていることを確認します。


 docker-machine ls


7.Docker Swarmを構成するためのtokenを作成します。


 eval $(docker-machine env manager) #左記コマンドを実行することで[manager]でコマンドの実行が可能となります。
 docker run --rm swarm create
  0ac50ef75c9739f5bfeeaf00503d4e6e #左記ランダムなtokenが発行されるので以降使用します。


8.manager側の設定を行います。(変更箇所はtokenのみ)

 
 docker run -d -p 3376:3376 -t -v /var/lib/boot2docker:/certs:ro swarm manage -H 0.0.0.0:3376 --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server.pem --tlskey=/certs/server-key.pem token://[7で発行されたtoken]


9.agent1側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent1)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


10.agent2側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent2)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


11.Swarmが構成されたことを確認します。


 DOCKER_HOST=$(docker-machine ip manager):3376
 docker info

 ※Nameに[agent1][agent2]が表示されており[Running:2]等になっていればOK


12.適当にコンテナを起動します


 docker run hello-world


上記だけだとCoreOSよりも簡単にSwarmクラスタが構成できる印象でした。
ただ、一旦上記Docker-Machineを停止、起動するとクラスタ構成がわけわからなくなる・・・。
※「使い捨て」思想のためDocker-Machineの停止、起動自体、想定外の操作かもしれないですが。

実運用で使用するためにはまだまだ勉強が必要と感じました。