無償の「Docker for Windows」で手軽にLinuxコンテナを利用する:Windows管理者のためのDocker入門(1/2 ページ)
Windows OS向けのDocker for Windowsが正式にリリースされ、Windows環境でも簡単にDockerを導入できるようになった。Windows 10のHyper-VでDockerのコンテナを利用してみよう。
最近のITシステムでは、DockerのLinuxコンテナを使った軽量なアプリケーション実行環境の利用が進んでいる。本番環境だけでなく、運用や開発の現場でもコンテナ技術は広く使われている。だがDockerのコンテナはLinuxをベースにしているということもあり、Windows環境、特にクライアント環境ではまだまだ普及しているとは言いがたかった。
だが2016年7月末に「Docker for Windows」(および「Docker for Mac」)の正式版(Ver.1.12)がリリースされ、64bit版のWindows 10ならば、比較的簡単に導入できるようになった。
本記事では、このDocker for Windowsのインストール方法と簡単な利用方法についてまとめておく。
Docker for Windows
長らくβ版という扱いだったDockerがVer.1.12で正式版となり、Windows 10のHyper-VをネイティブサポートしたDocker for Windowsがリリースされた。
「Docker」とは?
Dockerとは何かについては以下の記事を参照していただきたいが、簡単に言うと、非常に軽量なコンテナ型のアプリケーション実行環境のことである。
独立したアプリケーション実行環境といえば、ハイパーバイザ型(Hyper-Vなど)やホスト型(Windows Virtual PCなど)の仮想実行環境を真っ先に思い浮かべる読者諸氏も多いだろう。これらは、PCのハードウェアをエミュレーションして、その上でOSやアプリケーションを動作させている。また目的のアプリケーションとは関係のないサービスなども多数動作する。そのため、オーバーヘッドが大きく、リソースも無駄に多く必要になりがちだ。
これに対して「コンテナ」は、アクセスできるリソースや権限などを制限/分離した「プロセス」である。コンテナを管理するコストはプロセスを管理するコストとほとんど変わらず、仮想マシンを管理するコストと比較すると非常に軽い。
Dockerの実行環境
Dockerでは、最終的なアプリケーションはホストOSのプロセスとして実行されているため、余計なオーバーヘッドがない。ただし通常のLinuxのプロセスと違って、Linuxカーネルのサポートする「コンテナ」技術などをベースにしている。コンテナは、他のプロセスからは隔離された、ある程度独立したプロセス実行環境である。コンテナごとにファイルシステムやネットワークインタフェース、名前空間などが独立している。図中の「Docker Engine」はDockerのコンテナの実行をサポートするためのモジュールであり、外部からはDocker APIを使って制御される。Docker for Windowsでは、このLinux OS部分はHyper-V上で動作している。
Docker for Windowsとは?
Dockerは、もともとはLinuxのコンテナ技術をベースとしたプロセス実行環境である。そのため、Dockerを動作させるためにはLinux OS(のコンテナ)が必要となる。
だがWindows OSではLinuxコンテナを直接実行させることができないため、従来はWindows OS上にOracle VirtualBoxという仮想化ソフトウェアを乗せ、その上でLinux(もしくは、コンテナの実行だけに特化した軽量Linux OS)を動作させていた。これが今までWindows向けに提供されていた「Docker Toolbox」というツールである(従来は全てβ版という扱い)。
Windows 8以降のWindows OSでは、標準的な仮想化環境としてHyper-Vが用意されているが、これはVirtualBox(やVMware Workstation)のようなサードパーティー製の仮想化ソフトウェアとは共存できない。そこでHyper-Vを使うように新しく作り直されたのが、今回リリースされたDocker for Windowsである。
Windows標準のHyper-Vを使うため、操作や管理が簡単になるし、Hyper-Vを使う他の開発ツール(Visual Studioなど)とも親和性が高い。開発やテスト環境ではこれはありがたいだろう。
●「Windowsコンテナ」「Windows Subsystem for Linux」とは関係ない!?
なお念のために言っておくと、Docker for WindowsはWindows Server 2016で利用可能できる「Windowsコンテナ」(正確には「Windows Serverコンテナ」と「Hyper-Vコンテナ」の2つ)をサポートするものではない。あくまでも「Linuxコンテナ」をサポートするものである。各コンテナの違いについては以下の記事を参照していただきたい。
また、Windows 10 Anniversary Update(バージョン 1607、ビルド14393)で導入された「Windows Subsystem for Linux(WSL)」や「bash(Bourne Again Shell)」(以下の記事参照)と連携することもない。WSL上に「apt-get install docker.io」でDocker関連のコンポーネントをインストールしようとしても一部エラーになってインストールできないし、WSL上からdockerコマンドを使って、Docker for Windowsの(Hyper-V上にインストールされている)コンテナを管理することもできない。
Docker for Windowsの要件
Docker for Windowsを利用するための要件は以下の通りだ。
- 64bit版のWindows 10(バージョン1511、ビルド10586以降)、ProもしくはEnterprise/Educationエディション
- Hyper-Vが利用できること
- コンテナ実行用の仮想マシンには、メモリ2GB、ディスク60GB(容量可変タイプの仮想ディスクで、初期サイズは4GB程度)のリソースが必要
以上の要件を満たさない場合は、Docker for Windowsではなく、VirtualBoxを使った従来形式のツール(Docker Toolbox)をダウンロードしてインストールする。
以下ではWindows 10上での利用例を紹介するが、Windows Server 2016向けには「Docker Enterprise Edition」が提供されている。
Docker for Windowsのインストール
Windows 10向けのDocker for Windows(Docker Community Edition)は以下の場所からダウンロードできる。
用意されているバイナリには「Stable channel(安定版)」と「Edge channel(最新機能を積極的に取り入れているβ版)」の2種類がある。通常は前者をインストールすればよいだろう(2017/04/28時点での最新Stable channelのバージョンはVer.17.03)。
InstallDocker.msiファイルをダウンロード後、ダブルクリックするとインストーラが起動するので、指示に従ってインストール作業を行う。ユーザーが選択するべきオプションは何もないので、すぐにインストールが完了する。Hyper-V機能はあらかじめインストールしておいてもよいが、未インストールの場合は最後に「Docker requires Hyper-V to run」というダイアログが表示されるので、そこで[Enable & Restart]をクリックするとHyper-V機能が追加され、システムが再起動する。
インストールが終わると、Hyper-Vに新しい仮想マシン「MobyLinuxVM」が追加され、さらに新たに仮想スイッチ「DockerNAT」が追加されているはずなので確認しておく。
仮想マシンの設定は次の通りである。
Docker for Windowsがインストールした仮想マシンの設定画面
Docker用の軽量Linuxがインストールされ、この中で複数のコンテナが動作する。
(1)「MobyLinuxVM」は、コンテナ向けの軽量OS「Alpine Linux」を使った、Docker用の仮想マシン。
(2)このVMの場合、メモリは2GB確保されていたが、場合によってはもっと増やしてもよいだろう。
(3)プロセッサはデフォルトでは2コアが割り当てられていた。
(4)仮想ディスクは最大サイズ60GBの容量可変タイプ。
(5)インストール元のOSのイメージ。
(6)自動的に作成された「内部ネットワーク」インタフェースが接続される。
一度インストールしてしまえば、基本的にはHyper-Vの管理ツールでこの仮想マシンを操作する必要はない。以後のDocker関連の操作は全てdockerコマンドで行う。仮想マシンの再起動などの操作は、後述のDocker for Windowsアプリの[Settings]にある[Reset]−[Restart Docker...]などを使うこと。さもないと、コンテナからインターネットへの接続が途絶えるといったトラブルが生じることがある。
Copyright© Digital Advantage Corp. All Rights Reserved.