Racher：アリババクラウドにインストールしてDockerアプリケーションを管理する方法

このチュートリアルでは、**Alibaba Cloud** ECSインスタンスに**Racher**をインストールする方法と、**Racher**を使って**Docker**アプリケーションを管理する方法を学びます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/install-and-configure-rancher-on-alibaba-cloud_595238)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#前提条件
このチュートリアルでは、以下のアイテムが必要です。

- 新たに作成した 2 台の Alibaba Cloud インスタンスと Ubuntu 16.04 がインストールされていること。
- Rancherサーバーとして機能する ECS インスタンスに設定されている静的 IP アドレス 192.168.0.100 と、ランチャークライアントとして機能する ECS インスタンスに設定されている静的 IP アドレス 192.168.0.103。
- 両方のインスタンスに root パスワードを設定します。
参考までに、[新しい ECS インスタンスを作成](https://www.alibabacloud.com/help/ja/doc-detail/25424.htm)して[インスタンスに接続する](https://www.alibabacloud.com/help/ja/doc-detail/25434.htm)を参照してください。次に、Ubuntu 16.04インスタンスにログインしたら、`apt-get update -y`コマンドを実行して、ベースシステムを最新の利用可能なパッケージでアップデートします。

#Dockerをインストールする
このチュートリアルを始める前に、両方のインスタンスにDockerの最新の安定版がインストールされていることを確認する必要があります。デフォルトでは、Ubuntu 16.04のデフォルトリポジトリでは、最新の安定版Dockerは利用できません。そのため、インスタンスにDockerのリポジトリを追加する必要があります。

まず、以下のコマンドで apt が HTTPS 経由でリポジトリを利用できるようにします。

```
apt-get install apt-transport-https ca-certificates curl software-properties-common
```

次に、以下のコマンドでGPGの公式キーをダウンロードして追加します。

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
```

次に、以下のコマンドで鍵の指紋を確認します。

```
apt-key fingerprint 0EBFCD88
```

出力は以下のようになります。

```
pub   4096R/0EBFCD88 2017-02-22
      Key fingerprint = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22
```

次に、以下のコマンドでDockerリポジトリを追加します。

```
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

次に、リポジトリを更新し、以下のコマンドでDockerをインストールします。

```
apt-get update -y
apt-get install docker-ce=17.09.1~ce-0~ubuntu -y
```

Dockerをインストールしたら、以下のコマンドでDockerの状態を確認します。

```
systemctl status docker
```

出力は以下のようになります。

```
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-12-04 20:36:26 IST; 1min 0s ago
     Docs: https://docs.docker.com
 Main PID: 14498 (dockerd)
   CGroup: /system.slice/docker.service
           └─14498 /usr/bin/dockerd -H unix://

Dec 04 20:36:24 rancher dockerd[14498]: time="2018-12-04T20:36:24.456058066+05:30" level=warning msg="Your kernel does not support swap memory 
Dec 04 20:36:24 rancher dockerd[14498]: time="2018-12-04T20:36:24.456185632+05:30" level=warning msg="Your kernel does not support cgroup rt pe
Dec 04 20:36:24 rancher dockerd[14498]: time="2018-12-04T20:36:24.456222954+05:30" level=warning msg="Your kernel does not support cgroup rt ru
Dec 04 20:36:24 rancher dockerd[14498]: time="2018-12-04T20:36:24.458818614+05:30" level=info msg="Loading containers: start."
Dec 04 20:36:25 rancher dockerd[14498]: time="2018-12-04T20:36:25.632077835+05:30" level=info msg="Default bridge (docker0) is assigned with an
Dec 04 20:36:25 rancher dockerd[14498]: time="2018-12-04T20:36:25.894066060+05:30" level=info msg="Loading containers: done."
Dec 04 20:36:26 rancher dockerd[14498]: time="2018-12-04T20:36:26.580044220+05:30" level=info msg="Docker daemon" commit=4d60db4 graphdriver(s)
Dec 04 20:36:26 rancher dockerd[14498]: time="2018-12-04T20:36:26.581073448+05:30" level=info msg="Daemon has completed initialization"
Dec 04 20:36:26 rancher systemd[1]: Started Docker Application Container Engine.
Dec 04 20:36:26 rancher dockerd[14498]: time="2018-12-04T20:36:26.784977406+05:30" level=info msg="API listen on /var/run/docker.sock"
```

#Rancherのインストール
次に、RancherサーバーのインスタンスにRancherサーバーをインストールする必要があります。rancher/serverのDockerイメージをダウンロードし、以下のコマンドを実行することでコンテナ内のRancherサーバーを起動することができます。

```
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable
```

Rancher サーバーが正常にインストールされると、ポート 8080 を使用して Web ブラウザからアクセスできるようになります。

#Rancher の設定
今、あなたのウェブブラウザを開き、URLを入力してください `http://192.168.0.100:8080`次のページにリダイレクトされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/00261f98-faba-21cf-cb58-134ca0021c6b.png)


まず、ユーザーを管理するための Rancher アクセスコントロールを設定する必要があります。Rancher は、Active Directory、Azure AD、Github、OpenLDAP、SAML、ローカル認証など、多くのアクセスコントロールをサポートしています。

ここでは、Rancher のローカル認証を設定します。

設定するには、ADMIN メニューからアクセスコントロールをクリックします。以下のようなページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3b7575ad-6ec2-3a59-19bb-ffb4520fc087.png)

次に LOCAL Access Control をクリックし、ユーザー名とパスワードを入力して、Enable Local Auth ボタンをクリックします。すると、以下のページで Local Authentication が有効になっている Rancher Dashboard が表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/b0d5336f-bf95-5bd3-7c8b-29c28e0fc767.png)


#Rancher サーバーに Rancher クライアントを追加する
次に、Rancher クライアントを Rancher Server インスタンスに追加する必要があります。

これを行うには、Rancher ダッシュボードに移動し、[インフラストラクチャー]メニューをクリックし、[ホスト]ボタンをクリックします。以下のページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/2906eedf-22b6-026d-8f2b-93d595ff0603.png)

ここで、「ホストの追加」ボタンをクリックします。以下のページにホスト登録URLが表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/61ad87b0-5631-5c63-4964-1bf97ccbd3a7.png)

ここで、「保存」ボタンをクリックします。以下のようなページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/6be75977-5f58-f110-1bb1-297ab7a4e13c.png)

ここで、カスタムホストタイプを選択し、RancherクライアントのIPアドレスを入力します。次に、ボックスから Docker コマンドをコピーします。

次に、Rancher Client インスタンスにログインし、ターミナルを開き、以下のようにコマンドを貼り付けます。

```
docker run -e CATTLE_AGENT_IP="192.168.0.103"  --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.0.100:8080/v1/scripts/B8DD56FA4C0200C93870:1514678400000:76ua9Llt9e58W6MMYzYmwMVXAg
```

このコマンドは、Rancher Agent ホスト上に新しい Rancher コンテナをダウンロードして作成します。プロセスが正常に完了すると、以下のような出力が表示されるはずです。

```
Status: Downloaded newer image for rancher/agent:v1.2.11

INFO: Running Agent Registration Process, CATTLE_URL=http://192.168.0.100:8080/v1
INFO: Attempting to connect to: http://192.168.0.100:8080/v1
INFO: http://192.168.0.100:8080/v1 is accessible
INFO: Configured Host Registration URL info: CATTLE_URL=http://192.168.0.100:8080/v1 ENV_URL=http://192.168.0.100:8080/v1
INFO: Inspecting host capabilities
INFO: Boot2Docker: false
INFO: Host writable: true
INFO: Token: xxxxxxxx
INFO: Running registration
INFO: Printing Environment
INFO: ENV: CATTLE_ACCESS_KEY=8DEEDD0366EBBA2368EE
INFO: ENV: CATTLE_AGENT_IP=192.168.0.103
INFO: ENV: CATTLE_HOME=/var/lib/cattle
INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_URL=http://192.168.0.100:8080/v1
INFO: ENV: DETECTED_CATTLE_AGENT_IP=192.168.0.103
INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.11
INFO: Launched Rancher Agent: f2242a231e5c774a80004c7a930145b9711406fd6e22d1af6a2aaf508d1ee863
```

次に、Rancher ダッシュボードに戻り、閉じるボタンをクリックしてください。新しく追加された Rancher クライアントが以下のページに表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/dae2ad53-a424-ed4c-e3c2-a39f84dca242.png)

#Rancher を使って新しいコンテナを作成する
Rancher サーバーとクライアントのインストールと設定が完了したので、Rancher を通して新しいコンテナを作成しましょう。

Rancher ダッシュボード上の INFRASTRUCTURE メニューから Containers をクリックしてください。以下のページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/14afa717-dbd9-84ca-9be2-4b6aebbdf6e9.png)

ここで、「コンテナの追加」ボタンをクリックします。以下のようなページが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/f99c0cec-493a-c9c0-4635-54ee2c147cdd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/14ac7364-def6-10d4-ac51-4b92e8f4d058.png)

コンテナ名を指定し、画像を選択し、ポート番号を指定して作成ボタンをクリックします。コンテナが正常に作成されると、以下のページに新しく作成されたWebサーバーコンテナが表示されるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/c009606d-ff40-76d0-312e-78640525d365.png)

#結論
これで、Ubuntu 16.04 サーバーに Docker を使って Rancher をインストールし、設定することができました。これで、RancherのWebインターフェースを使って、Dockerコンテナの作成、起動、停止、削除などを簡単に管理できるようになりました。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*