2015/09/01

Windows Server 2016 TP3 > Docker 無くても、Windows Server Containers は動く

“Docker 無くても、Windows Server Containers は動く”

別の言い方をするなら、

"Windows Server Container は Docker エンジン上で動いているにあらず

Windows Server 2016 Technical Preview 3 の注目機能は、Docker 対応と Windows Server Container の提供です。ちょっと混乱するかもしれませんが、Windows Server 版 Docker が無くても、Windows Server Container は動くという話。

思わず Windows Server Container が Docker 上で動くと説明してしまいそうですが、それは間違い。私自身、どっかでそう説明していたらごめんなさい。訂正します。

Windows Server で動く Docker デーモン (Docker.exe) は、Docker クライアントに対する管理インターフェイス(Docker API) を提供しているだけのようです。 Windows Server Container を Docker で管理できる(それも、Linux の Docker と同じように、Linux からでも) ということ。

関連:
Windows Server 2016 TP3 > Windows 版 Docker でリモート接続 (TLS) を有効化する

試しに、Docker Daemon を止めてみると...


Docker クライアントによる操作はできなくなりますが、Windows PowerShell の Containers モジュールのコマンドレットによる管理には影響しません。



Docker Daemon を止めたままでも、New-Container や Start-Container によるコンテナーの作成と実行は可能。

Windows Server コンテナーを動かしているのは、Hyper-V Host Compute Service (C:\Windows\system32\vmcompute.exe) というサービス。Hyper-V ハイパーバイザー上でコンテナーが動作しているわけではありませんが、Hyper-V のテクノロジをいろいろと応用しているみたい。


Windows Server Container は Hyper-V 仮想マシンではないけど、仮想スイッチは Hyper-V と同じもの (Internal Only タイプ) を利用してますね。


Linux ベースの Docker は LXC (Linux Containers)という Linux のコンテナ技術(Docker 0.9 以降は LXC ではなく、Linux カーネルの libcontainer らしい)を利用して Linux コンテナーを動かすようですが、LXC に相当するのが Windows Server 2016 TP3 に追加されたサーバーの機能 Containers であり、Windows Server Containers の管理機能を Docker に提供しているということみたい。

0 件のコメント: