はじめに
- WindowsのWebサーバーであるIISは基本的にはWindowsOS上でしか動作しない
- docker imageも公式で用意されているが、
Docker for mac
やlinux版では動作しない - そのためmac環境では通常だとIISを立ち上げることが難しい
- 本記事はそんな面倒な制約があるIISをmac上で動かす方法を記述する
環境
- macOS BigSur ver11.6.5
- windows server2019 を立てる
概要
-
ホストOS(macOX) -> ゲストOS(VirtualBox-windows server2019) -> ゲストOS上のゲストOS(IIS Docker container)
という通信経路localhost:8080 -> localhost:8080(VirtualBox) -> localhost:80(IIS)
- windows 用 docker image である IIS を vuitual box 上で起動して、ホスト PC からブラウザ経由でアクセスできるまで
- image tag は
windowsservercore-ltsc2019
流れ
- Vagrant と Virtual Box のインストール
- Docker machine のインストール
- Windows Server 2019 の Docker machine を構築する
- VirtualBox で NAT 設定
- IIS Docker image を run する
- ブラウザから確認
Vagrant と Virtual Box のインストール
Docker machine のインストール
-
重要 docker machine の最新版をインストールすること
-
fatal error: MSpanList_Insert
のようなエラーが発生する可能性がある
-
-
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine && \ chmod +x /usr/local/bin/docker-machine
Windows Server 2019 の Docker machine を構築する
-
2019-box
を使うgit clone https://github.com/StefanScherer/windows-docker-machine cd windows-docker-machine vagrant up 2019-box
-
Docker machine の確認
-
vagrant up
コマンドが終わったあと、Docker machine ができているかの確認をする
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS 2019-box - generic Running tcp://192.168.99.90:2376 v18.03.1-ee-3
-
自分は下記のように表示されたが、その後の作業に影響はなかったため、先に進んだ
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS 2019-box * generic Running tcp://192.168.59.90:2376 Unknown Unable to query docker version: 400 Bad Request: client version 1.15 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version
-
-
Docker machine の利用
-
docker を virtual box で起動した windows 環境の Docker に切り替える
$ eval $(docker-machine env 2019-box)
-
切り替わっているかの確認
-
windows docker machine
$ docker version Client: Cloud integration: 1.0.17 Version: 20.10.8 API version: 1.41 Go version: go1.16.6 Git commit: 3967b7d Built: Fri Jul 30 19:55:20 2021 OS/Arch: darwin/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.6 API version: 1.41 (minimum version 1.24) Go version: go1.13.15 Git commit: 8728dd2 Built: Fri Apr 9 22:45:40 2021 OS/Arch: windows/amd64 Experimental: false
-
windows/amd64
になっていることが確認できる- コマンドを打ったターミナルでのみ切り替わっている状態
-
-
-
Docker machine を戻す
-
macos 上の docker machine に戻したい時
$ eval $(docker-machine env --unset)
-
切り替わっているかの確認
-
macos docker machine
Client: Cloud integration: 1.0.17 Version: 20.10.8 API version: 1.41 Go version: go1.16.6 Git commit: 3967b7d Built: Fri Jul 30 19:55:20 2021 OS/Arch: darwin/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.8 API version: 1.41 (minimum version 1.12) Go version: go1.16.6 Git commit: 75249d8 Built: Fri Jul 30 19:52:31 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.9 GitCommit: e25210fe30a0a703442421b0f60afac609f950a3 runc: Version: 1.0.1 GitCommit: v1.0.1-0-g4144b63 docker-init: Version: 0.19.0 GitCommit: de40ad0
-
linux/amd64
になっていることが確認できる
-
-
VirtualBox で NAT 設定
-
2019-box
の NAT 設定を行い、ホスト OS と VirtualBox 間を通信できるようにしておく -
virtualbox のウィンドウを開く
IIS Docker image を run する
-
Windows IISイメージを run する
-
タグは
windowsservercore-ltsc2019
-
windows docker machine
docker run --entrypoint powershell -it -p 8080:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
-
ブラウザから確認
その他
- IIS のデフォルト画面の場所は
C:\inetpub\wwwroot\iisstart.htm
- virtualbox をシャットダウン
-
macos docker machine
vagrant halt
-
- IIS 上に資材のデプロイ
-
windows docker machine
docker cp ./ [container name]:"C:\inetpub\wwwroot"
-
トラブルシュート
ブラウザから IIS にアクセスできない
- 各階層それぞれで IIS に繋がるか確認していく