[メモ] Windows2019でWindowsコンテナ+Dockerにて、IIS

ここ↓で公開されている box イメージの Windows Server 2019(英語)の180日評価版を使って、Windows Containerを使ってみる。

- https://app.vagrantup.com/StefanScherer/boxes/windows_2019


- IIS <font color='blue'>on</font> docker(Windows container) <font color='blue'>on</font> Windows server 2019 <font color='blue'>on</font> Virutalbox <font color='blue'>on</font> Windows 10 ?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/3a10a325-d91c-6c5d-340f-ad1bc2477b3d.png)

- VMのイメージやら、Dockerのイメージが大きいです。


# 環境
- ホスト機:
    - Windows 10 Pro 64bit
    - VirtualBox v6.0.8
    - Vagrant v2.2.4

# 手順
## ホスト機

1. 左下のWindowsのアイコンを右クリックして、PowerShellを管理者で開く   
2. Chocolatey導入して、Virtualbox と　vagrantをインストール

    ```powershell:コピペ(管理者で)
# Chocolatey導入
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
#
# virtualboxとvagrantのインストール
cinst -y virtualbox vagrant
```


3. Windows Server 2019の仮想機
	`vagrant up`で、初回、6GB近いイメージをダウンロード・展開して、VMを起動するので、１時間くらいかかる

	```powershell
	mkdir C:\vagrant\WinSvr2019
	cd C:\vagrant\WinSvr2019
	vagrant init -m StefanScherer/windows_2019
	# Vagrantfileが生成されるので、↓のように編集する
	notepad Vagrantfile
	#
	vagrant up ; vagrant reload
	```

	```rb:Vagrantfileを編集
	Vagrant.configure("2") do |config|
	  config.vm.box = "StefanScherer/windows_2019"
	  config.vm.network :forwarded_port, host: 23389, guest: 3389, id:"rdp", auto_correct: true  # <= この行を追加
	end
	```



4. 以下のようなエラーがでるが、気にせず、`vagrant reload` で再起動

	```
	.
	.
	.
		default: WinRM transport: negotiate
	An error occurred executing a remote WinRM command.

	Shell: Cmd
	Command: hostname
	Message: [WSMAN ERROR CODE: 2147942421]: <f:WSManFault Code='2147942421' Machine='127.0.0.1' xmlns:f='http://schemas.microsoft.com/wbem/wsman/1/wsmanfault'><f:Message><f:ProviderFault path='%systemroot%\system32\winrscmd.dll' provider='Shell cmd plugin'>The device is not ready. </f:ProviderFault></f:Message></f:WSManFault>
	PS C:\vagrant\WinSvr2019>
	```

5. `vagrant rdp` で、リモートデスクトップ接続
ユーザ `vagrant` パスワード `vagrant` でログイン	



## Windows Server 2019 VMにて
1. こんな感じで、管理者で、PowerShellを開く

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/83697917-4a68-d571-0433-e89d5483bbff.png)

2. Dockerインストール
以下コピペ。途中、`Y`  と入力するところがある。

	```powershell:以下コピペ
	Install-WindowsFeature -Name Containers;Install-Module -Name DockerMsftProvider -Repository PSGallery -Force ; Install-Package Docker -ProviderName DockerMsftProvider -Force
	```

	![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/44cf80ce-2821-4afe-9d10-c9a82e4f892a.png)

3. リモートデスクトップを閉じて、`vagrant reload` でVirtualBoxのWinSvr2019を再起動

4. `docker run hello-world`

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/c37cf1f5-7ea3-72b8-1507-99abf1c6e3d2.png)




### IIS

```powershell:PowerShellにて
mkdir C:\inetpub\wwwroot
cd C:\inetpub
echo "Hello IIS !" > C:\inetpub\wwwroot\index.html
icacls C:\inetpub\wwwroot /grant Everyone:F

# イメージ起動
docker run -d --rm --name iis -p 8080:80 -v C:\inetpub\wwwroot:C:\inetpub\wwwroot microsoft/iis

# Internet Explorerにて、アクセス
'C:\Program Files\internet explorer\iexplore.exe' http://localhost:8080/
```

- WinSvr2019に付属の Internet Explorerにて<br>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75594/3a10a325-d91c-6c5d-340f-ad1bc2477b3d.png)


# その他
- `vagrant destroy` して、`vagrant up`すると、評価期間が180日に戻っている?