RackspaceのCarinaでDockerコンテナ


Rackspaceが提供するコンテナホスティングのCarina

無償ベータ期間だそうで、使ってみました。

まずは、こちらでアカウントの作成
https://getcarina.com/

ログイン

アカウントを作成してログインすると、こんな感じ。

チュートリアル

お試しということでこちらのチュートリアルをやってみる。
https://getcarina.com/docs/getting-started/getting-started-on-carina/

クラスターの作成

なにはなくともクラスター、って事でクラスターを作成するようです。
クラスターは、ネットワーク、ストレージ、コンテナ群などを管理する単位のよう。

と言う事で、「Add Cluster」をクリック

クラスター名とオートスケールするかどうかを指示して「Create Cluster」をクリック。
クラスター名:zum-cluster-01
今回はオートスケールは無しにしました。

しばらくSTATUSがbuilding...となって、1分程度待つと、

こんな感じでクラスターが作成されます。
デフォルトでNodeは3つ作成され、そのうちの一つが起動している様子です。

Docker Version Manager

さて、ここからはローカルのCLIで作業が出来る。。。
ための準備を行います。

コントロールパネルで、作成したクラスターの「Get access」をクリックすると、Docker Version Manager (dvm)と言うツールがダウンロードされます。

ファイルは、[クラスター名].zipとなり、これを適当な場所にダウンロード、展開。

で、こんな感じのファイルが展開されました。
ターミナルからこのディレクトリに移動して、チュートリアルの通り、

$ source docker.env
※Windowsの場合は、チュートリアルを参照シて下さい。

ちなみに、docker.envの中身は、

docker.env
__CARINA_ENV_SOURCE="$_"

if [ -n "$BASH_SOURCE" ]; then
  __CARINA_ENV_SOURCE="${BASH_SOURCE[0]}"
fi

DIR="$(cd "$(dirname "${__CARINA_ENV_SOURCE:-$0}")" > /dev/null && \pwd)"

unset __CARINA_ENV_SOURCE 2> /dev/null

export DOCKER_HOST=tcp://104.130.0.22:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=$DIR

export DOCKER_VERSION=1.11.2

な感じで、もろもろdvmを利用するための設定など。

Docker Version Manager (dvm) のインストール

そして、dvmのインストールは下記。

$ curl -sL https://download.getcarina.com/dvm/latest/install.sh | sh

Downloading dvm.sh...
######################################################################## 100.0%
Downloading bash_completion
######################################################################## 100.0%
Downloading dvm-helper...
######################################################################## 100.0%

Docker Version Manager (dvm) has been installed to /Users/ist/.dvm
Run the following command to start using dvm. Then add it to your bash profile (e.g. ~/.bashrc or ~/.bash_profile) to complete the installation.

  source /Users/***/.dvm/dvm.sh

sourceでdvm指定して、インストールは

$ source /Users/***/.dvm/dvm.sh
$ dvm use
1.11.2 is not installed. Installing now...
Installing 1.11.2...
Now using Docker 1.11.2
Now using Docker 1.11.2

インストール完了。

$ docker info
Containers: 5
Running: 3
Paused: 0
Stopped: 2
Images: 3
Server Version: swarm/1.2.0
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 1
5fcf9b69-5b3f-4d7b-94f2-cb15f9e04231-n1: 104.130.0.22:42376
└ Status: Healthy
└ Containers: 5
└ Reserved CPUs: 0 / 12
└ Reserved Memory: 0 B / 4.2 GiB
└ Labels: com.docker.network.driver.overlay.bind_interface=eth1, executiondriver=, kernelversion=3.18.21-7-rackos, operatingsystem=Debian GNU/Linux 7 (wheezy) (containerized), storagedriver=aufs
└ Error: (none)
└ UpdatedAt: 2016-06-20T16:58:50Z
└ ServerVersion: 1.11.2
Plugins:
Volume:
Network:
Kernel Version: 3.18.21-7-rackos
Operating System: linux
Architecture: amd64
CPUs: 12
Total Memory: 4.2 GiB
Name: 5fcf9b69-5b3f-4d7b-94f2-cb15f9e04231-n1
Docker Root Dir:
Debug mode (client): false
Debug mode (server): false
WARNING: No kernel memory limit support

お〜、Carina見てるっ。

コンテナ起動

チュートリアルではWordpressとMySQLの2つのコンテナを立ち上げるので、仰せのままに。

ネットワーク作成

クラスター内に独自のネットワークを作成します。この閉じられたネットワーク内でコンテナ同士が通信すると。

$ docker network create zum-nw-001
781c5d46b42f95de82e33143a636dd2fc1bf3e87e1076e51f4506f12bf99098d

dockerのコマンドのまんまですね。zum-nw-001と言うネットワークを作成しました。

MySqlコンテナ起動

$ docker run --detach --name mysql --net zum-nw-001 --env MYSQL_ROOT_PASSWORD=password mysql:5.6
b4a828eea06b8f78cd604b94e9bc6373071a8760fff7fb7f89e8eca22260f53c

※チュートリアルのまんま。。。この記事の価値皆無だな(^^;

ローカルでrunするよりも気持早いかな。

Wordpressコンテナ起動

$ docker run --detach --name wordpress --net zum-nw-001 --publish 80:80 --env WORDPRESS_DB_HOST=mysql --env WORDPRESS_DB_PASSWORD=password wordpress:4.4
a41838a98aa4ba6c2c98f7a0b5018c4c9f950fc9e2975722e2f3ffd2c7fc3d46

ホントに立ち上がってる???

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
a41838a98aa4        wordpress:4.4       "/entrypoint.sh apach"   25 seconds ago      Up 22 seconds       104.130.0.22:80->80/tcp   5fcf9b69-5b3f-4d7b-94f2-cb15f9e04231-n1/wordpress
b4a828eea06b        mysql:5.6           "docker-entrypoint.sh"   2 minutes ago       Up 2 minutes        3306/tcp                  5fcf9b69-5b3f-4d7b-94f2-cb15f9e04231-n1/mysql

Carinaお見事!

動作確認

下記で、アクセス用IPアドレスを確認します。

$ docker port wordpress 80
104.130.0.22:80

後は普通にWordpressのインストールを実行して、

この状態でイメージを確認してみると、

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
swarm               1.2.0               021d335278a5        11 days ago         18.71 MB
mysql               5.6                 2c0964ec182a        3 weeks ago         329 MB
swarm               carina-consul       aac599bcad73        5 weeks ago         28.49 MB
wordpress           4.4                 769a7fd0230c        10 weeks ago        519.5 MB
cirros              latest              f8ce316a37a7        5 months ago        7.735 MB

swarmが動いてたりします。

ここまで来た状態で、WEBのコントロールパネルを見てみると、

Imageやコンテナ、ネットワーク等がわかりやすく表示されていました。

コンテナ削除

動作確認が出来たので、コンテナを削除します。削除コマンドも「dvm」と同じ。

$ docker rm --force --volumes wordpress mysql
wordpress
mysql

感想

Carinaは思った以上に簡単でした。
dvmをインストールした後は、いつもローカルで行っているのと同じコマンドが利用出来るので、まったく悩むこともなく、Wordpressが立ち上がりました。

起動後の動作も、体感的には早い、と感じました。

操作性、性能とも、十分利用価値はありそうです。
ベータが終了した後のPricingにもよりますが。。。

しばらくは色々使ってみたいと思います。