DockerでWindowsを操る!dockur/windows が開く新境地と活用法
今回は、ちょっぴりスパイ映画のような響きを持つ「dockur/windows」について、その正体を暴き、どのように私たちの開発ライフを助けてくれるのか、秘密の情報をお届けします。
「dockur/windows」は、その名の通り、Dockerコンテナの中でWindowsを動かすための、まるで秘密基地のようなツールです。
「え、DockerってLinuxのコンテナじゃないの?」
そう思った方も多いでしょう。それがこのツールの面白いところ。一般的なDockerでは、LinuxのOSをベースに軽量なコンテナを動かしますが、このdockur/windowsを使うと、Windowsをまるで一つのアプリケーションのように起動し、操作できるようになります。
まるで、あなたのパソコンの中に、もう一つのWindowsPCを、こっそりと忍び込ませるようなもの。
この秘密兵器が、あなたの開発プロジェクトにどう革命をもたらすのか、いくつかのシナリオを見ていきましょう。
マルチプラットフォーム対応のテスト
あなたのアプリケーションは、Windowsでも正しく動作しますか?
CI/CDパイプラインに、Windows環境でのテストを組み込みたいと思ったことはありませんか?
dockur/windowsを使えば、Linuxマシン上で簡単にWindows環境を立ち上げ、テストを実行できます。これにより、Windowsユーザー向けのバグを早期に発見し、開発のサイクルを高速化できます。まるで、敵地に潜入して情報を収集するスパイのように、Windows環境の挙動を監視できるのです。
特定のWindowsアプリケーションの自動化
Windowsでしか動かないレガシーなアプリケーションや、GUIベースのツールを自動化したい。
PowerShellスクリプトの実行環境が必要だけど、わざわざWindowsサーバーを立てるのは手間だ。
dockur/windowsは、そのようなニッチなニーズにも応えます。コンテナなので、必要な時だけサッと起動し、処理が終わればすぐに破棄できます。
クロスプラットフォーム開発環境の統一
チームメンバーがMacやLinuxを使っているが、一部のWindows開発者と環境を合わせる必要がある。
dockur/windowsをベースにすることで、全員が同じWindows環境で開発・テストを行えます。これにより、「私の環境では動くのに…」といった、開発者の間で起こりがちな摩擦を解消できます。
dockur/windowsの導入は、非常にシンプルです。あなたのマシンにDockerがインストールされていれば、すぐにでもミッションを開始できます。
まず、ターミナルを開き、以下のコマンドを打ち込みます。これは、秘密のファイルを手に入れるための合言葉です。
docker pull dockur/windows
次に、Windows環境を立ち上げるためのコマンドを実行します。
docker run -it --rm --name=my-secret-windows dockur/windows
このコマンドを実行すると、ターミナル上でWindowsのデスクトップ環境が立ち上がります。まるで、敵の拠点の監視カメラをハッキングして映像を映し出すように、Windowsの画面があなたの目の前に現れます。
補足
-it
対話モードでコンテナを実行します。
--rm
コンテナの停止時に自動的に削除します。ミッション完了後の痕跡を消すためです。
--name=my-secret-windows
コンテナに名前をつけます。
ここでは、dockur/windowsコンテナの中でPowerShellスクリプトを実行する例を見てみましょう。これは、秘密のメッセージを実行するようなものです。
まずは、あなたのマシンに簡単なPowerShellスクリプトファイル(message.ps1)を作成します。
message.ps1
Write-Host "Mission accomplished. The current date is $(Get-Date)."
次に、このファイルをコンテナにマウントして、実行します。
docker run -it --rm -v $(pwd):/host_dir dockur/windows powershell -File /host_dir/message.ps1
コマンドの解説
-v $(pwd):/host_dir
あなたの現在のディレクトリ($(pwd))を、コンテナ内の/host_dirというディレクトリにマウントします。これで、秘密のファイルをコンテナに持ち込めます。
powershell -File /host_dir/message.ps1
コンテナ内でPowerShellを実行し、マウントしたスクリプトファイルを指定します。
このコマンドを実行すると、以下のような出力が得られます。
Mission accomplished. The current date is [現在の日付と時刻].
無事に秘密のミッションが完了しましたね!
dockur/windowsは、まるで開発者のための秘密兵器。Windows環境を手軽に、そして安全に扱えるようにしてくれます。
テストの自動化、レガシーシステムの移行、開発環境の統一など、あなたのプロジェクトの様々なミッションに、このツールはきっと役立つはずです。