Rancher でコンテナをリンクする

# はじめに
Rancher 上でコンテナをリンクしてみます．
この記事では例として， GitLab の動作環境を Rancher で作成します．

# 構成
今回構築する GitLab 環境は， GitLab のコンテナ, Redis のコンテナ, PostgreSQL のコンテナ，と3つのコンテナを2つのホストに分けて作成します．
Redis のコンテナとGitLab のコンテナを1つ目のノードに，PostgreSQL を2つ目のノードでそれぞれ作成します．
また，GitLab -- Redis, GitLab -- PostgreSQL 間でコンテナをリンクします．
このため，同一ホストのコンテナ間でのリンクと異なるホストのコンテナ間でのリンクを行なうことになります．

また，PostgreSQL コンテナの `/var/lib/postgresql` と GitLab コンテナの `/home/git/data` は永続化のためにボリュームをマウントします．

このような構成を単一ホスト内でRancher を用いずに行なう方法は，以下のリンクの通りです．

* https://github.com/sameersbn/docker-gitlab/blob/master/assets/init
* http://qiita.com/yacchin1205/items/fa774011d72ead599eb5

# Redis コンテナの作成
まずは，Redis のコンテナを作成するため，1つ目のホスト(下画像の左側) の "Add Container" をクリックします．
![010.png](https://qiita-image-store.s3.amazonaws.com/0/51342/efd12223-6c61-2c8a-5c9b-9fe74c1b7a12.png)

コンテナ名とイメージ名を指定します．
今回は以下のように指定しました．

コンテナ名

```
gitlab-redis
```

イメージ

```
sameersbn/redis:latest
```
![020.png](https://qiita-image-store.s3.amazonaws.com/0/51342/70f8ded4-b35c-f092-23cf-a93bcda8a624.png)

"Create" ボタンをクリックし，コンテナを作成します．
Redis コンテナの作成はこれだけです．

# PostgreSQL コンテナの作成
次に，PostgreSQL のコンテナを作成するために，2つ目のノード(下画像右側) の "Add Container" をクリックします．

![030.png](https://qiita-image-store.s3.amazonaws.com/0/51342/96ec9d7b-261d-9592-b8b4-ef954d368034.png)

先ほどと同様，コンテナメイトイメージを指定します．
指定した値は以下の通りです．

コンテナ名
`gitlab-postgresqla`

イメージ
`sameersbn/postgresql:latest`

![040.png](https://qiita-image-store.s3.amazonaws.com/0/51342/ce734f15-a207-b2c3-ba75-11a268bc1108.png)


次にデータベースの名前，ユーザ名，パスワードを環境変数にセットします．
環境変数の設定のために，まず，"ADVANCED OPTIONS" をクリックします．
表示された詳細設定の項目の中にある "ENVIRONMENT VARS" が環境変数の設定です．
"ENVIRONMENT VARS" 横の + ボタンをクリックし，環境変数の入力欄を追加し，値を指定します．

今回セットした環境変数とその値は以下の通りです．

```
DB_NAME
gitlabhq_production

DB_USER
gitlab

DB_PASS
password
```


![050.png](https://qiita-image-store.s3.amazonaws.com/0/51342/7978b941-e97f-2af6-518e-526cd6aaf2c0.png)

さらにボリュームの設定を行います．
"ADVANCED OPTIONS" の下にある "Volumes" をクリックします．
"VOLUMES" 横の + をクリックし，ボリュームを追加します．
ボリュームに指定する値は以下の通りです．

**Volume**
`/var/lib/postgresql`

![060.png](https://qiita-image-store.s3.amazonaws.com/0/51342/ffca402f-b391-726b-3328-a11c5d006eb6.png)

最後に "Create" ボタンをクリックし，コンテナを作成します．

# GitLab コンテナの作成
GitLab のコンテナを作成するために，yarai-ranchar002 の"Add Container" をクリックします．


![070.png](https://qiita-image-store.s3.amazonaws.com/0/51342/54397f86-3cec-de53-a662-f37e1892fc80.png)

先ほどと同様に，まずコンテナ名とイメージを指定します．

コンテナ名

```
gitlab
```


イメージ

```
sameersbn/gitlab:7.8.4
```

![080.png](https://qiita-image-store.s3.amazonaws.com/0/51342/d136ef14-c7f4-a18b-1036-a774cb6081d9.png)

次に，環境変数を指定します．

```
GITLAB_HOST
192.155.222.164

GITLAB_PORT
10080

DB_NAME
gitlabhq_production

DB_USER
gitlab

DB_PASS
password
```

![090.png](https://qiita-image-store.s3.amazonaws.com/0/51342/914e3668-2f57-d244-6406-994d83efd37d.png)


次に，ボリュームを指定します．

volume

```
/home/git/data
```

![100.png](https://qiita-image-store.s3.amazonaws.com/0/51342/41437e0e-784f-345f-eeef-64955e5f224f.png)

最後に，他コンテナとのリンクの設定をします．
リンクの設定は以下の通りです．

link

```
gitlab-postgresql
↓
postgresql

gitlab-redis
↓
redisio

```



![110.png](https://qiita-image-store.s3.amazonaws.com/0/51342/73d3479d-63f5-5510-8c8b-4632c324575b.png)

以上の設定で，"Create" ボタンをクリックしコンテナを作成します．


コンテナ作成後，ポートのバインド設定を行います．
コンテナの80番ポートをホストの10080番ポートへバインドしています．
![120.png](https://qiita-image-store.s3.amazonaws.com/0/51342/25323c36-7ecb-c0fb-8944-f1983754a384.png)

GitLab コンテナは起動してから可能になるまでに時間5〜10分ほど時間がかかります．
コンテナのログを見て待ちたいという方は，コンテナ名の横にある≡ボタンをクリック-->"View Logs" をクリックするとコンテナのログを見ることができます．

![130.png](https://qiita-image-store.s3.amazonaws.com/0/51342/ab24d1e5-b176-62e2-6b26-9420f8aed2d3.png)

GitLab コンテナのログが以下のようになれば，利用可能になります．
![140.png](https://qiita-image-store.s3.amazonaws.com/0/51342/e159de82-a876-09d7-cf45-a156ff7a8d75.png)

GitLab コンテナを作成したホストの10080 ポートをブラウザで開くと，GitLab のページが表示されました．
![150.png](https://qiita-image-store.s3.amazonaws.com/0/51342/3eeedce9-63b5-679e-2d70-55c80156e1d7.png)

# おわりに
GitLab 環境を Rancher を用いて作成しました．
GitLab の例だと，特に問題なくリンクできたのですが，WordPress + MySQL だとうまくいかなかったりします．