Tech Sketch Bucket of Technical Chips by TIS Inc.

Shipyardをインストールしてみた

Pocket

昨今、Dockerのエンタープライズ基盤への利用が拡大しつつある。それに対応すべく、DockerをPaaSとして運用する為の製品が多数、開発、提供されており、注目度も非常に高くなっている。
ITmedia社 @IT上で『実際に検証済み!OSS徹底比較』を連載させて頂いているが、その記事としてDokcer PaaS製品の比較検証の記事を執筆した。
その記事執筆にあたり、対象として選定した「Shipyard」の評価を行うため、実際にインストールを行った手順を記事としてまとめてみた。評価は2016年9月時点での最新のStable版を使用して評価を行っている。

インストールの為に以下のサイトを参考にさせて頂いている。
dockerをWebで管理できるshipyardが想像以上に便利だった件
Github shipyard readme.md


検証に使用した環境は以下となる。※画像はクリックすると拡大表示

CentOS 7.2をインストールしたサーバを3台使用する。全てにDockerをインストールし、1台をSwarm masterサーバ、残り2台をSwarm nodeとして構成する。shipyardはSwarm master上に構築する。
Shipyard/Docker Swarmともにサーバ1台でも動作させることが可能である、1台で検証を行う場合はnodeに対する手順を全てスキップする形でよい。


Dockerのインストールとregistryの設定 (master/node共通)

1.packageのupdateとDockerのインストール
検証時点ではDocker 1.10がインストールされる。
$ sudo yum update -y
$ sudo yum install -y docker

2.Docker registryのセキュリティ設定
DockerのOPTIONSに "--insecure-registry" の設定を追加
$ sudo vi /etc/sysconfig/docker

3.root以外のユーザにDockerコマンドの実行権限を付与
ここでは "maintain" ユーザに付与している。
$ sudo useradd docker
$ sudo usermod -aG docker maintain

4.Dockerを起動
$ sudo systemctl enable docker
$ sudo systemctl start docker


firewallのポート開放とDokcer registryの起動

1.DockerおよびShipyardで使用するポートの開放
Swarm(2375/tcp) / etcd(4001/tcp) / registry(5000/tcp) / Shipyard(8080/tcp)
$ sudo firewall-cmd --add-port=2375/tcp --zone=public --permanent
$ sudo firewall-cmd --add-port=4001/tcp --zone=public --permanent
$ sudo firewall-cmd --add-port=5000/tcp --zone=public --permanent
$ sudo firewall-cmd --add-port=8080/tcp --zone=public --permanent
$ sudo firewall-cmd --reload

2.Docker registry (V1系latest)の起動
Shipyardが現状ではV1系のDocker registryにしか対応していない為、V1系の最新版(0.9.1)を使用する。
tagはGithub docker-registry readme.mdに記載されている。
$ sudo docker run -d --restart=always -p 5000:5000 registry:0.9.1


Docker registoryのテスト

master側

1.ubuntu:latestをpullしてregistryに登録
$ docker pull ubuntu:latest
$ docker tag ubuntu:latest tissvv093:5000/linux/ubuntu:latest
$ docker push tissvv093:5000/linux/ubuntu:latest

2.Docker registryの登録内容の確認
$ curl -X GET http://tissvv093:5000/v1/search

Docker registry v2系の場合は、URLが異なる。
curl -X GET http://tissvv093:5000/v2/_catalog

3.Docker registryからのコンテナイメージの取得と実行の確認
一旦、pull済のイメージを削除してからpull→runを確認する。
$ docker rmi tissvv093:5000/linux/ubuntu:latest
$ docker pull tissvv093:5000/linux/ubuntu:latest
$ docker run -it tissvv093:5000/linux/ubuntu:latest /bin/bash

node側

1.Docker registryの登録内容の確認
$ curl -X GET http://tissvv093:5000/v1/search

2.Docker registryからのコンテナイメージの取得の確認
$ docker pull tissvv093:5000/linux/ubuntu:latest

実行すると、Docker registryのバージョンが古いことの警告が表示される。


Docker Swarm(master) / Shipyardのインストール (masterのみ)

1.インストール用のshell scriptのダウンロード
$ curl -O https://shipyard-project.com/deploy

2.環境変数の設定とインストール用のshell scriptの実行
Dokcer Swarmの設定と、Shipyardの設定が全てDockerコンテナの起動の形で行われる。
ACTIONが未設定の場合、deployが補充されるため、exportは省略しても良い。
$ export ACTION="deploy"
$ bash deploy

この時点でmaster件nodeとしてShipyardを利用することは可能である。サーバ1台構成の場合はこの時点でインストールは完了となる。

Docker swarm(join) (nodeのみ)

Shipyardのコンテナの制御はDocker swarm経由で行われる為、Shipyardのコンテナはnodeでは起動しない。

1.インストール用のshell scriptのダウンロード
$ curl -O https://shipyard-project.com/deploy

2.環境変数の設定とインストール用のshell scriptの実行
swarmのKVSとして使用するetcdのURLとインストールコマンドの区分を定義するACTIONの環境変数を設定する。未設定の場合、masterとして設定されてしまう。
$ export DISCOVERY="etcd://10.255.202.93:4001/"
$ export ACTION="node"
$ bash deploy

以上でインストールは完了となる。


Shipyardの実行確認

1.ログイン画面の表示
ブラウザでmasterサーバの8080ポートにアクセスするとログイン画面が表示される。
user/pass = admin/shipyardでログインできる。※画像はクリックすると拡大表示

2.Docker registryの登録
Docker registryの登録画面で先ほど作成したregistryを登録する。
正常に登録できれば、registry内のコンテナイメージの状況もブラウザで参照可能となる。※画像はクリックすると拡大表示

3.クラスタ情報の確認
Nodes画面でDocker swarmクラスタの状態が確認できる。※画像はクリックすると拡大表示

ここまで確認できれば、Shipyardの機能は問題無く動作するはずである。
次のShipyard 3.1のissueでは、Docker 1.12のswarmやDocker registry v2への対応も予定されている。
構築も簡単で使い勝手も良く、今後も非常に楽しみな製品であり、Ver 3.1リリース時は再度、評価を行ってみたい。


エンジニア採用中!私たちと一緒に働いてみませんか?