前回までは、Windows Server 2016 Technical Preview 3(TP3)の「Windows Serverコンテナー」を、PowerShellコマンドレットによるネイティブな方法で操作してきました。今回は、Windows Server 2016 TP3における「Docker」のサポートを説明します。
Windows Server 2016 Technical Preview 3(TP3)で初めて「Docker」がサポートされたと聞いて、“以前から「Docker Toolbox」(旧称:Boot2Docker)があったじゃない”という人がいるかもしれません。
Docker Toolboxは、WindowsやMac OS上でDockerを手軽に試すことができるツールで、DockerのWebサイトから無料で入手できます。Docker Toolboxは、「Boot2Docker」と呼ばれていたツールの後継になります。
Windows版のDocker Toolboxと、Windows Server 2016 TP3のDockerサポートは全く違います。
Windows版のDocker Toolboxは「Oracle VirtualBox」の仮想マシン上でLinuxベースの軽量なホストOSを動かし、その仮想マシンをDockerホストとして、Windows版のDockerクライアントからコンテナーを操作するという方法でDocker環境を実現しています(画面1)。
つまり、Docker ToolboxのDockerホスト上で実行できるのは、Linuxベースのコンテナーだけです。Windows Server 2016 TP3のDockerサポートと共通しているところがあるとすれば、Dockerクライアントとして提供されるWindows版のDockerバイナリだけでしょう。
Windows Server 2016 TP3におけるDockerサポートとは、本連載の第26回「Windows ServerのDockerサポートとは?」で説明したように、Dockerとの管理互換を提供するものです。
コンテナーホストのセットアップ時には、セットアップ用スクリプト「ContainerSetup.ps1」によってDockerのWindows版バイナリ「Docker.exe」がダウンロードされ、「Docker Daemon」としてシステムに登録されます。
Docker Daemonは、ローカルのDockerクライアント(同じDocker.exe)およびリモートのDockerクライアント(WindowsやLinux)からDocker APIによる接続を受け付け、Windows Server 2016 TP3のContainersとの橋渡しを行います。
つまり、Windows Server 2016 TP3のDockerサポートとは、Windows Server 2016に実装予定のコンテナー技術であるContainers上で作成、実行されるWindows Serverコンテナーを、Dockerと同じ管理方法で操作できるということです。
将来的に開発者や管理者は、オープンなDockerエコシステムの一部としてWindowsベースのコンテナーを利用できるようになり、LinuxとWindowsのコンテナーを横断する分散アプリケーションを展開できるようになるでしょう。
ただし、Windows Server 2016の現時点(TP3)でのDockerサポートには、さまざまな制約があります。以下のドキュメントには、Windows Serverコンテナーに対して使用できないDockerコマンドや、部分的にしか機能しないDockerコマンドについて説明されています。例えば、Dockerハブにコンテナーイメージをアップロードする「docker push」コマンドは、リポジトリが存在しないというエラーで失敗します。
先に指摘しておきますが、Windows Server 2016 TP3では、Windows PowerShellコマンドレットで作成したコンテナーをDockerコマンドで参照したり、操作したりすることはできません。また、その反対にDockerで作成したコンテナーをPowerShellで参照したり、操作したりすることもできません。将来的には同じコンテナーをWindows、Linuxの両方から管理できるようになると思いますが、現状は統合されていない点に注意してください。
それでは、本連載の第27回「所要時間は1分未満! 今すぐできるWindows Serverコンテナーの作り方」および第28回「IISコンテナーの作成で理解するコンテナーのネットワーク機能」で説明したPowerShellによる管理が、Dockerから管理するとどうなるのか、見てみましょう。
なお、筆者はDockerに精通しているわけではないので、Dockerコマンドの細かい使い方については説明しません。以下のWebサイトのようなLinuxベースのDockerのよくあるチュートリアルを参考に、同じように実行してみているだけです。具体的なコマンドについては、画面から読み取ってください。
Copyright © ITmedia, Inc. All Rights Reserved.