Docker のコマンドが多くて、すぐに忘れてしまうのと Windows Containers 向けのオプションがあったりするので備忘録的にまとめます。
そういえば MSDN のドキュメントが更新されて Docker のインストールがシンプルになっていました。
PowerShell でコマンドレットをいくつか実行すると入ります。特定バージョン以上の NuGet が必要ですが、コマンドレットの指示に従えばインストールしてくれるみたいです。
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force Install-Package -Name docker -ProviderName DockerMsftProvider Restart-Computer -Force
なお、以前のバイナリ配布されていたバージョンと同じっぽいです。
コンテナを実行してログイン
# Windows Server Containers docker run -it IMAGE (cmd or powershell) # Hyper-V Containers docker run -it --isolation=hyperv IMAGE (cmd or powershell)
ログイン後は exit と打てばコンテナから抜けることが出来ます。docker run に --rm オプションを追加しておくと、抜けたタイミングで自動でコンテナが削除されるので便利です。
docker run -it --rm microsoft/windowsservercore cmd
コンテナをバックグラウンドで実行
# Windows Server Containers docker run -d IMAGE # Hyper-V Containers docker run -d --isolation=hyperv IMAGE
コンテナ次第ではすぐに終了してしまうので、終わらせないために適当なコマンドを仕込んでおきます。
# コンテナを終了させないようにする docker run -d microsoft/windowsservercore cmd /c "ping -t localhost"
コンテナをバックグラウンドで実行(ポート指定)
# Windows Server Containers docker run -d -p 8080:80 IMAGE # Hyper-V Containers docker run -d -p 8080:80 --isolation=hyperv IMAGE
microsoft/iis から派生しているイメージは 80 番ポートを使うようになっています。ホスト側のポート番号は WinNAT の制限で今はあまり意味がないです。
コンテナの IP アドレスを取得
docker inspect -f "{{ .NetworkSettings.Networks.nat.IPAddress }}" CONTAINER_ID
WinNAT の制限でコンテナホストから直接アクセスできないため、IP アドレスを取得します。
実行しているコンテナにログイン
docker exec -it CONTAINER_ID (cmd or powershell)
コンテナを停止
docker stop CONTAINER_ID
全ての起動しているコンテナを停止したい場合には docker ps -q の結果を使います。
docker ps -q | %{ docker stop $_ }
コンテナを削除
docker rm CONTAINER_ID
全てのコンテナを削除したい場合には docker ps -aq の結果を使います。
docker ps -aq | %{ docker rm $_ }
Docker Compose のインストール
PowerShell を使ったインストールでは Docker Compose が入らないので別で入れます。
ワンライナーを実行するだけで、簡単に使えるようになりました。