Rancher and Windows Containers on Microsoft Azure

Rancherの1.3から実験的にWindowsコンテナーをサポートしています。
まずは、1.3のリリースノートを見てみましょう。

# 1.3リリースノート
- **Windows Server 2016 サポート - 実験的 [#4576]** - 実験的なプレビューでWindowsコンテナーをサポート。 Windowsコンテナに対するDockerのサポートの詳細については、Dockerのウィンドウのサポートを参照してください。今回の実験的リリースでは、次の機能に制限しています:
 - RancherエージェントサービスとしてのWindows 2016サーバーホストの追加。
 - スタック、サービス、およびコンテナの追加。
 - サポートされているネットワークモードは、「NAT」と「透過」のみです。
 - 注意: 上記以外にも、LBサービス、DNS、メタデータなどの既存のRancherの機能は、まだWindowsコンテナで動作するように移植されていないため、現在は機能していません。今後にご期待下さい！

>
- **Windows Server 2016 Support - Experimental [#4576]** - We are providing an experimental preview into support of Windows containers. Please see Window's Support for Docker for more details on Docker's support for Windows containers. In this experimental release, the release is limited to the following features:
 - Adding Windows 2016 server hosts as Rancher agent services.
 - Adding stacks, services, and containers.
 - The only supported network modes are "NAT" and "transparent".
 - NOTE: Other than noted above, existing Rancher features such as LB services, DNS, and metadata do not currently work yet as they have not been ported to work on Windows containers just yet. Look for it in the future!

Windows Server 2016をRancherサーバからホスト追加して、コンテナの追加、削除を行うことはできるが、Cattle、K8S、Mesos、Swarm等のオーケストレーションには対応していません。また、Rancherマネージャにも対応していません。

まずは事始めに、RancherサーバにWindows Server 2016ホストを追加して、IISコンテナを稼働させるまでをやってみましょう。

TRY.RANCHER.COMとMicrosoft Azureを利用して以下の構成を構築してみようと思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6d4c94c9-7672-6043-ae8b-71ff1d5e9ffd.png)

クラウド環境でRancherサーバ専用のインスタンスを作成して、構築することもできますが、今回はRancher公式のSandboxであるTRY.RANCHER.COMを利用してみましょう。

# 1.RANCHER SANDBOX

RANCHER SANDBOXは、Rancherサーバを無料で利用できる公式のお試しサービスです。
GitHubのアカウントがあればすぐに利用できます。
不特定多数のユーザに開放しているので、認証機能の設定変更はできませんが、その他の機能はすべて利用できます。

![pic2.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4def7132-7599-e3f1-ff7b-5defac2188dd.png)

RANCHER SANDBOXの準備から始めます。

1.GitHubのアカウント登録（アカウントが無い場合）
2.ブラウザを起動して、[TRY.RANCHER.COM](https://try.rancher.com/login)にアクセスします。
3.言語をEnglishから日本語に変更して、「GitHubで認証」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7bec94aa-b4b2-5045-2aa6-c5671ca74b93.png)

4.初回のみGitHub認証ページに飛ぶのでGitHubのアカウントとパスワードを入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d21aaf2f-b4db-dccf-c0de-0ec611bd53a4.png)

5.「Welcome to Rancher!」が表示されるので、必要事項を入力して、「Get Started」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5dd746b7-b6b9-7488-818f-14233dc8c588.png)

6.ログイン後、上部メニューの「環境」から「環境を管理」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f6623953-5dd7-1d9f-cca6-22a512118a37.png)

7.画面遷移後、「環境を追加」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/98fd86ad-4812-bfb4-c159-d1cb8bcaa88d.png)

8.「名前」にWindows、「環境のテンプレート」でWindowsを選択して、「作成」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0633d958-bd36-ec8e-10f3-50a7c53ec486.png)

9.上部メニューの「環境」から、作成したWindowsを選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b674b28a-3467-c861-1fef-d000471348b5.png)

10.上部メニューの「インフラストラクチャ」から「ホスト」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/02be4bc0-34fc-6834-7271-768a2a39477e.png)

11.「ホストを追加」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/452b81b2-7c9e-009c-79b4-afe13925f3d9.png)

12.Microsoft Azure上にWindows Server 2016の準備完了後に、以下のコマンドをPowerShell上で実行して、「閉じる」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/9bc4e3a2-96b5-d532-f4c4-ee80f7fc3d53.png)

# 2.Microsoft Azure

Microsoft Azureの準備をします。もちろん、他のAWS、GCP、Blumix Infrastructure等のクラウド環境やオンプレミスでも問題ありません。

Microsoft Azureのアカウントが無い場合は、[こちら](https://azure.microsoft.com/ja-jp/free/)から登録します。初回の登録であれば、￥20,500分の無料クレジットを利用できます。（2017年3月現在）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/72cf1911-2f9b-0f70-3ec4-389eed896b74.png)

1.登録完了後、ログインした状態で、「Marketplace」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b8ae07f6-b675-e6a1-9166-d436d6d88e52.png)

2.「Compute」を選択して、「Windows Server」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/35dd6cac-6574-dc33-073c-f61e94916b2a.png)

3.「Windows Server 2016 Datacenter - with Containers Microsoft」を選択して、「作成」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0963925c-2ad6-7a76-b5ec-923da69d0e43.png)

4.「Name」「User name」「Password」「Confirm password」「Resource group」を入力して、「場所」を「東日本」に設定して「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d7ed5448-ceea-c78a-f81b-3cc800f96c07.png)

5.「F2S Standard」を選択して、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a0e64e92-3408-c28d-1b5f-37eb9dde48ee.png)

6.「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f374ec4e-f5f7-3839-1adc-a2d07d777bee.png)

7.「OK」をクリックします。しばらくすると仮想サーバを利用できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e13188be-0729-a4d1-ed56-d2907180c7e3.png)

8.デフォルトでは仮想サーバの80番ポートが閉じられているので開放します。「network security groups」と検索します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f0e3de97-b415-0196-6a59-fd0579b9b479.png)

9.対象のグループを選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/189fe1d0-9a47-482a-2cbc-b883f16cc1f1.png)

10.画像にある赤枠個所をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/c1caa49d-235e-5a96-baf1-603e8be14a98.png)

11.「+Add」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/45d68d04-9e3b-0106-f62c-c310aad327e1.png)

12.「Name」に任意名を入力しますが、ここでは「IIS」とします。「Service」は「HTTP」を選択して、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/fe847d5c-c775-2291-23de-9e8f517fc1f8.png)

13.設定が追加されていることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/9b487723-963a-e4db-18c4-2ac491d2bcb1.png)

14.「コンピューター」に仮想サーバのPublic IP addressを入力します。ユーザー名に仮想サーバ構築時に設定したユーザ名を入力します。ここでは「rancher」とします。「接続」をクリックします。さらにパスワードが要求されるので、仮想サーバ構築時に設定したパスワードを入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a035c220-449f-4d58-1a96-ab8262843bb3.png)

14.ログイン後にServer Managerが自動起動するので、「Yes」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4b78a40d-5932-ec47-7ff6-e16079a7f9cd.png)


15.WindowsメニューからWindowsPowerShellを起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5fb22a86-27c2-7513-0995-160227eacd54.png)

16.以下のコマンドを実行して、Dockerのバージョンを確認します。

```lang:コマンド
PS C:＼Users ＼rancher> docker version
```

17.以下のコマンドを実行します。

```lang:コマンド
PS C:＼Users ＼rancher> docker network create –d transparent transparent
```

18.以下のコマンドを実行します。
※Rancherの管理画面で表示されるものをコピペしてください。

```lang:コマンド
New-Item -Path 'C:\Program Files\rancher' -Type Directory
Invoke-WebRequest -UseBasicParsing 'https://github.com/rancher/agent/releases/download/v0.6.0/agent.exe' -OutFile 'C:\Program Files\rancher\agent.exe'
& 'C:\Program Files\rancher\agent.exe' -register-service https://try-api.rancher.com/v1/scripts/338697BE2932B8E58CA2:1483142400000:YVAd1iMoLABrGVN0zjoDeO3nA
Start-Service rancher-agent
```

19.「閉じる」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/9e4afecc-8cec-c75e-4cd6-94245355813b.png)

# 3.IISコンテナ

1.数分内にホストが作成されます。「コンテナを追加」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/405c769f-7dc1-c4c6-d88e-cb9d1f2a491c.png)

2.「名前」に任意名を入力します。ここでは「iis」とします。「イメージ選択」で「microsoft/iis」と入力します。「パブリックホストポート」と「プライベートコンテナポート」に80と入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/9f75c074-2b6a-4801-52f0-ef1e9d509c08.png)

3.「作成」をクリックします。IISコンテナは、10GB程あるので、少し時間がかかります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7b026ab3-7292-9433-dd14-456c2ddc0771.png)

4.コンテナに「iis」が追加され、リソースの詳細を確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0d87cb14-713a-d36e-1416-12bbf51f9fba.png)

5.WindowsPowerShellを起動して、Dockerコマンドでも状況を確認してみます。

```lang:コマンド
PS C:＼Users ＼rancher> docker ps
PS C:＼Users ＼rancher> docker images
```
以下のように、IISコンテナが起動しているのと、imageファイルがあることを確認できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8b55ed15-bad2-2163-260f-6c03ddb367f1.png)

6.ブラウザを起動し、仮想サーバのPublic IP addressにアクセスして、IISの初期画面が表示されることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/fc3586c8-1455-60ee-f73c-8b724e3a748b.png)

以上となりますが、不要となった場合は、Microsoft Azureのポータルから今回使用したリソースは、すべて削除してください。