WindowsのDocker(コンテナ)対応、正しく理解できていますか?その知識、ホントに正しい? Windowsにまつわる都市伝説(69)(1/3 ページ)

Windows Server 2016とWindows 10では「Docker」がサポートされます。一方、Docker社は「Docker for Windows」を提供しています。どちらも“Docker”ですが、両者は似て非なるもの。似たものがいろいろと出てきていますので、整理しておきましょう。

» 2016年10月21日 05時00分 公開
[山市良テクニカルライター]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windowsにまつわる都市伝説」のインデックス

探しているのは、Windows上のDockerですか? Windows上のUbuntuですか?

 Windows Server 2016では新たに「Docker」がサポートされます。その一部は、Windows 10 Anniversary Update(バージョン1607)のProおよびEnterpriseエディションにも提供されます。

 一方、Docker社は「Docker for Windows」という無料のソフトウェアを提供しています。WindowsのDocker正式サポートと、Docker for Windowsのリリース時期がほぼ重なったため、両者を混同している人が少なからずいるようです。

 例えば、「Windowsコンテナを動かそうと思ってDocker for Windowsをインストールしてみたが、そんなことはできなかった」「Windows上でUbuntuコンテナを動かそうと思い、Windowsのコンテナ機能を有効化してみたができなかった」といった失敗例がありそうです。

 Windows 10 Anniversary Updateでは「Windows Subsystem for Linux(Beta)」という機能が追加されており、その上で動く「Bash on Ubuntu on Windows」というものもあります。Ubuntuが動くDockerコンテナと、これとを混同してしまう人もいるかもしれません。

Windows Server 2016のDocker対応とは?

 Windows Server 2016では、新しいサーバ機能として「コンテナ」(英語版では「Containers」)が追加されました。これがWindows Server 2016のコンテナ技術のコア部分なのですが、Dockerではありません。この機能だけではコンテナを作成したり、実行したりすることはできないのです。

 Docker社はマイクロソフトとの協力、提携に基づき、Dockerに「Windows Server 2016のコンテナへの対応」を追加しました。Windows Server 2016のコンテナ機能に、さらにDocker社が提供する商用Dockerエンジン(Commercial Supported(CS)Docker Engine)とDockerクライアントのWindows版バイナリをインストールすることで、Windows Server 2016上でWindowsコンテナの作成と実行が可能になります。

 コンテナは「OSレベルの仮想化(抽象化)」技術であり、カーネル部分を共有しながら、サンドボックス化されたアプリケーション実行環境を実現するものです。LinuxベースのDockerでは、Linux上でUbuntuやCentOS、あるいはアプリケーションを含むLinuxコンテナを作成、実行することができます。

 一方、Windowsコンテナは、Windows Server 2016の「Server Core」インストールの環境(GUIなしのインストールオプション)または「Nano Server」(Windows Server 2016の最小インストールオプション)をコンテナとして実行するものです。

 そして、Windowsコンテナには「Windows Serverコンテナ」と「Hyper-Vコンテナ」の2種類あります。Windows Serverコンテナは、Linuxコンテナと同じような実装であり、コンテナホストのWindowsカーネルを共有して動作する、コンテナホスト上のプロセスであり、コンテナはServer CoreインストールまたはNano ServerベースのOS環境を疑似的に提供します(図1)。

図1 図1 Windows Serverコンテナの実行イメージ。Linuxコンテナの実装とよく似ている

 一方、Hyper-Vコンテナはコンテナホストとカーネルを共有せず、バックグラウンドでコンテナごとに実行される仮想マシン環境(コンテナホストからは仮想マシンとしては見えません)がコンテナに対してカーネルを提供します(図2)。

図2 図2 Hyper-Vコンテナの実行イメージ。仮想マシンはバックグラウンドで実行され、利用者やコンテナホスト側からは隠される

 コンテナの機能や動作はWindows Serverコンテナと変わりませんが、Hyper-Vの仮想化技術を利用してコンテナ間、およびコンテナホストとコンテナ間を隔離できます。これは、テナント間のセキュリティ的な分離や、クラウドインフラの保護が重要なマルチテナントのクラウド環境向けの機能です。

 Windows Server 2016 Technical Preview 5までは、Hyper-VコンテナはNano Serverベースのコンテナのみがサポートされていました。Windows Server 2016の正式版からは、Server CoreインストールベースのHyper-Vコンテナもサポートされるようになりました。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。