Windows上で稼働するLinux、動かしているのはどのテクノロジー?(その1)その知識、ホントに正しい? Windowsにまつわる都市伝説(94)(1/2 ページ)

Windows 10 Anniversary Updateでは「Bash on Ubuntu on Windows」が利用可能になりました。これは、Windows上でネイティブなUbuntu環境を実現するものですが、今後、Windows上でLinux環境を実現するバリエーションがさらに増えることになります。現時点でプレビュー段階のものを含め、Windows 10で実現可能なLinux環境とそのベースとなっているテクノロジーを簡単に紹介します。

» 2017年10月10日 05時00分 公開
[山市良テクニカルライター]
「Windowsにまつわる都市伝説」のインデックス

連載目次

Linux仮想マシン on Hyper-V

 Windows 10上でLinux環境を実現する最もシンプルな方法は、仮想化テクノロジーを導入して、仮想マシンを作成し、任意のLinuxをインストールして実行(またはメディアからライブ起動)することです。Homeエディションを除くPC向けの64ビット(x64)版Windows 10(およびWindows 8.1)は、仮想化テクノロジーとして「Hyper-V」(Windows ServerのHyper-Vに対して「クライアントHyper-V」と呼ぶことがあります)を搭載しており、これを利用することでLinux仮想マシンを実行することが可能です(画面1)。

画面1 画面1 Windows 10のクライアントHyper-Vの仮想マシンとして動作するUbuntu Linux

 仮想化テクノロジーとしてHyper-Vを使用せずに、「VMware Workstation」や「Oracle VirtualBox」などを導入することでも実現可能です。

Bash on Ubuntu on Windows(Windows Subsystem for Linux)

 Homeエディションを除く64ビット版のWindows 10 Anniversary Update(バージョン1607)からは、「Windows Subsystem for Linux(WSL)」というWindowsの新しいサブシステムが実装されました。さらにWindowsストアを通じて提供される「Bash on Ubuntu on Windows」をインストールすることで、ネイティブなUbuntuのOS環境を起動し、Linuxアプリケーションの実行環境をWindows上に実現することが可能です。

 Windows 10 Creators UpdateまでのWSLはβ版として提供されていますが、Windows 10 Fall Creators Update(バージョン1709)からは正式版になる予定です。また、WSLはWindows Serverバージョン1709(Windows ServerのSemi-Annual Channel)にも搭載される予定です。さらに、Ubuntu以外のLinuxディストリビューションも利用可能になる予定です。

 WSLは、仮想マシンとは全く異なる“アプリケーションのためのサンドボックス環境”(プロセスベースの分離されたコンテナ環境、コンテナは後で出てくるDockerのコンテナとは異なり、文字通りのコンテナ)を提供するテクノロジーであり、Microsoft Researchの「Drawbridgeプロジェクト」をWindowsに実装(picoprocessとして)したものです。

 Drawbridgeプロジェクトの別の実装として、SQL Server 2017のLinux版である「SQL Server on Linux」があります。Windows上でLinuxのネイティブなアプリケーションがそのまま動くのと同じように、WindowsバイナリであるSQL ServerがLinux上で動くのです。

画面2 画面2 Bash on Ubuntu on WindowsのLinux環境(画面はWindows 10 Insider Preview バージョン1709、ビルド16288)。正式版ではLinux環境からWindowsアプリケーションの実行を開始できるようにもなる予定

Linuxコンテナ on Windows(Docker for Windows)

 Dockerが無料提供している「Docker for Windows」を導入すると、Docker Hubで公開されている任意のLinuxコンテナをWindows 10上で実行することが可能です。Bash on Windows on Linuxとは異なり、Dockerホストのプロセスとして実行されるサンドボックス環境である「Dockerコンテナ」でLinuxアプリケーションの実行環境が実現されます。

 実は、Docker for WindowsのDockerホスト(エンジン)環境は、Windows上で直接動いているわけではなく、Hyper-V上で動作するLinux仮想マシン(仮想マシン名「MobyLinuxVM」)が提供しており、Windows 10側のローカルのDockerクライアントをこのLinux仮想マシンのDockerホストに接続することで実現されています(画面3)。

画面3 画面3 Docker for Windowsで作成、実行したUbuntuのLinuxコンテナ。Linuxコンテナ用のDocker環境は、Hyper-V仮想マシン(MobyLinuxVM)が提供している。Windowsコンテナをサポートする環境に切り替えることも可能

 「Docker Toolbox」と呼ばれていた以前のバージョンでは、Hyper-Vの代わりにOracle VirtualBoxが使用されていました(Hyper-Vを利用できない場合、Windows 10 バージョン1607以前のバージョンの場合は、Docker Toolboxを使用する必要があります)。

 Docker for Windowsは、64ビット版Windows 10 Anniversary Updateが提供する「コンテナ」機能をサポートしており、こちらに切り替えることで、Windowsコンテナ(microsoft/windowsservercoreおよびmicrosoft/nanoserver)をHyper-Vコンテナとして実行することも可能です。

 Windows Server 2016の「コンテナ」機能は「Docker Enterprise Edition(EE)」と連携して、Windows ServerコンテナとHyper-Vコンテナをサポートします。Windows Serverコンテナは、プロセスベースのサンドボックスであり、コンテナホストのカーネル上で動作します。

 一方、Hyper-Vコンテナは、これにHyper-Vの分離環境を組み合わせてコンテナ間およびコンテナとホスト間の隔離性を高めます。Windows 10は「Docker Community Edition(CE)」と連携して、後者のHyper-Vコンテナをサポートしています(画面4)。

画面4 画面4 Docker for WindowをWindowsコンテナ用のDocker環境に切り替え、WindowsコンテナをHyper-Vコンテナで実行しているところ

 現行バージョンのDocker for Windowsは、Linuxコンテナ用のDocker環境とWindowsコンテナ用のDocker環境を切り替えて利用する形になり、両者を同時に実行することはできないということを覚えておいてください。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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