このページの本文へ

前へ 1 2 次へ

Windows Info 第248回

Windows 10にはコンテナーがいっぱい

2020年11月01日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 「コンテナーがいっぱい」と聞くと、なんだか港の風景を思い出してしまうが、Windowsにもコンテナーが複数ある。コンテナーとは、アプリケーションの独立した実行環境とそこで動作するソフトウェアや設定などをファイル化して実行させるもの。あらかじめコンテナーを作っておけば、あとはそれを組み合わせてシステムを構築できるわけだ。

 仮想マシン環境に似ているが、コンテナー自体にはOSは含まれないし、必ずしも仮想マシン支援機能を前提としているためでもない。そもそもコンテナーが普及した1つの理由は、仮想マシンにつきもののオーバーヘッドや長い起動時間、大量のメモリー消費といった問題がないため。コンテナーは、特定のハードウェアに縛られることなく実行でき、システムを複数のコンテナーで構築することも可能であり、このとき仮想マシンに比べて実行オーバーヘッドの低いコンテナーは魅力的だったのだ

Windows 10Xにはさらに2つの「コンテナー」が追加される。MicrosoftエミュレーターによるWindows 10Xのプレビュー版より

Windowsにもコンテナーの機能が取り込まれた

 そんなコンテナーブームを受けて、MicrosoftもWindowsにコンテナー技術を持ち込んだ。これを「Windowsコンテナー」(あるいはWindows Container On Windows、WCOW)という。このWindowsコンテナーには大きく2種類あり、1つは「Windowsプロセス分離」(かつてはWindows Server コンテナーといった)、もう1つは「Hyper-V分離」(Hyper-Vコンテナーとも)である。

 このWindowsコンテナー、当初はPowerShellベースの管理コマンドを利用する予定だったが、Dockerと提携し、Dockerコマンドを取り込むことにした。これがWindowsにおける「Docker EE for Windows Server」である。

 しかし、すでに世の中はLinux上のコンテナーが普及しており、Linuxコンテナーをそのまま使いたいという要望が強かったようだ。これに対応して、Microsoftが作ったのが「Windows Linuxコンテナー」(Linux Container On Windows、LCOW)である。これは、Hyper-Vで専用のLinux仮想マシン(Moby VMと呼ばれている)を動かし、そこでLinuxコンテナーを動作させるもの。仮想マシンを使うため、なにか無理矢理感がないわけではない。

 その後、Docker自身がWindows用のDocker for Windowsをリリースする。Docker EE for Windows Serverでは、LCOWは実験的機能として提供されたが、Docker for Windowsでは正式に対応となった。というか、そもそもDockerのコンテナーはLinux用なので、当たり前といえば当たり前のこと。ただし、Docker for Windowsでは、WindowsコンテナーとLinuxコンテナーは同時に利用することはできず、切り替えてどちらかしか使えない。コマンドは同じでも、管理方法などがかなり違うためだ。

 同じDockerで2つの実行環境(WindowsとLinux)を扱うことは、かなりユーザーを混乱させた。どちらもDockerであり、どれもコンテナーだからだ。Linuxのコンテナーになれた人には、WindowsのSQLサーバーがDocker Hub(コンテナーが登録されているリポジトリ)にあることに奇妙な感じを抱くし、Windows側のユーザーも、Linuxの環境に違和感を感じた。コンテナーもいっぱいあれば、Dockerもいっぱいあったからだ。

WSL2がWindowsにおけるコンテナーを変えた

 そこに登場したのがWSL2だ。Windows内でLinuxを動かす「Windows Subsystem for Linux(WSL)」は、当初は、Linuxカーネルをエミュレーションする形で実現されたが、後継となるWSL2では“本物”のLinuxカーネルを導入した。これにより、WSL2では、オリジナルのDockerがそのまま動くようになった。しかも、仮想マシンよりも起動時間が短く、システム負荷も小さい。

 このWSL2に対応して作られたのがDocker Desktopである。Docker Desktopは、Docker for Windowsの後継として作られ、WSL2を使って、Dockerネイティブのコンテナーを動作させる。ただし、制御コマンドや管理ツールは、Windows側で動作する。このあたりをまとめたのが、以下の表だ。

 WindowsにはDockerとコンテナーがいっぱいある。とりあえず、今からWindowsユーザーが使うなら、Docker Desktopだろう。Windows 10ではWindowsコンテナーを使う必要はあまりないが、Node.jsなんかをちょっと試してみたい、WordPressをカスタマイズしたいけど稼働中のブログは止めたくないのでコンテナーで試してみる、といった用途になら十分利用できる。Docker DesktopのWSL2環境は、専用のディストリビューションを使うので、WSL2ディストリビューションの環境も変更しない。ちょっと試して、綺麗さっぱり消すこともできる。

 ただ今のところ、Windows Insider ProgramのDev Channelで公開されているWSL2ではGPU機能が利用ができない。これは、GPUを使う場合、Linux(WSL2)側で動作するDockerをNVIDIAのモジュールでカスタマイズする必要があるからだ。

 現在のDocker Desktopでは、専用のWSL2環境を使う関係で、ユーザーがWSL2側のDockerをカスタマイズすることができない。WSL2のGPU機能が正式機能として取り込まれる頃には、なんとかしてくれるのではないかと思っている。もっとも、そうならないとしてもWSL2でネイティブのDockerコマンドを使えば、GPUもちゃんと動くわけで、違いは管理ツールがWindowsの上にあるのかWSL2の上にあるのかといった違いのみだ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン