Docker for Windows は、Docker が提供する、クライアント・ベースのオペレーティングシステム(Windows 10)上で Docker コンテナを設定するための製品です。
最近はコンテナが大きな注目を集めていますが、コンテナと言えば Docker が他を引き離しています。Microsoft は、コンテナの分野から取り残されないよう、過去数年の間に Docker とのコラボレーションに力を注ぎ、Windows のエコシステムを Linux と同等のレベルまで引き上げました。Docker と Microsoft のパートナーシップによって生まれた製品の一つに Docker for Windows があります。
Docker for Windows は、Docker for Windows Server と似てはいるものの、別のものです。このブログで取り上げる Docker for Windows は、Windows 10 Professional または Enterprise 64-bit のみで動作します。もし、従来の Windows システムを使用している場合は、Docker Toolbox が使えます。
Docker for Windows には、Community エディションと Enterprise エディションの2種類があります。ここでは特に手の込んだことは行いませんし、無料のもので十分なので、Community エディションを使用します。
Windows 10マシンに、Docker for Windows Community Edition をダウンロードします。ダウンロードが完了したら、インストーラを実行します。完了すると、Windows からログアウトするように求めらるので、ログアウトしてもう一度ログインしなおしてください。
コンピュータの再起動時に、インストールされた Docker for Windows が自動的に起動し、Hyper-V とコンテナの機能をインストールするよう求められます。指示に従ってインストールし、再起動します。
[Ok] をクリックします。何も起こらなくても心配いりません。Docker for Windows は、Hyper-V とコンテナの機能をバックグラウンドでインストールしています。1分ほどかかりますが、コンピュータが再起動されます。コンピュータが再起動すると、Docker はシステムトレイから起動しようとします。
Parallels、MacOS 上の VMWare Fusion、IaaS クラウドインスタンスのような、既に仮想化された環境で Windows 10 を実行している場合、MobyLinuxVM 仮想マシンをスタートできないというエラーメッセージが表示される可能性があります。ここでは、Windows コンテナを作成したいので、Docker for Windows で Windows コンテナへの切り替えを指定します。
Windows コンテナを使用するように切り替えると、Docker は問題なく起動するはずです。次のステップは、使用するイメージをプルダウンすることです。Windows Server Core コンテナをセットアップしたいと思います。cmd または PowerShell で docker search を行い、公式の Docker レジストリを検索します。これでプルダウンするイメージの名前が取得できます。
PS> docker search *windowsservercore*
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
microsoft/windowsservercore Windows Server Core base OS image for Window… 340
イメージの名前が分かれば、docker pull を使ってイメージをコンピュータにプルダウンすることができます。
PS> docker pull microsoft/windowsservercore
Using default tag: latest
latest: Pulling from microsoft/windowsservercore
3889bb8d808b: Downloading [> ] 63.29MB/4.07GB
cfb27c9ba25f: Downloading [==> ] 62.29MB/1.308GB
Windows Server Core イメージがダウンロードされ、解凍されます。イメージがダウンロードされたら、そこからコンテナを実行できます。これを行うには、docker run コマンドを使用します。docker run コマンドは、イメージ上にコンテナを作成し、特定のコマンドを実行します。この例では、新しい Windows Server Core イメージ上で PowerShell を実行することを想定しています。そのためには、イメージの名前と PowerShell の実行可能ファイルを指定します。
PS> docker run microsoft/windowsservercore powershell
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\>
PS>
ここでは、あまり何かしているようには見えません。PowerShell のセッションが提示されると思ったら、PowerShell をコンテナに入れて終了してしまいました。その理由は、デフォルトでは、Docker の実行はインタラクティブではないため、コマンドが何であっても実行されて終わるためです。コンテナで PowerShell を使用できるようにするには、-it 引数を使用する必要があります。こうすることで PowerShell がオープンして稼働状態が維持されるので、行いたいことをすることができます。
Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.
より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。