Docker Desktop for Windows の構築
以前、投稿した記事で Windows Subsystem for Linux 2(以下、WSL 2 と呼びます) を構築する手順を解説いたしました。WSL 2 の構築手順をご覧になりたい方はこちらをクリックしてください。
その中で、Ubuntu Server を例に Windows 上で Linux OS を動作させる手順を解説いたしました。また、その Linux OS で WordPress を動作させることも簡単ではありますが紹介いたしました。
今回は、次のステップとして WSL 2 を構築した Windows PC へ Docker Desktop for Windows を構築する手順を解説したいと思います。
また、Docker 検証の一環として、Docker イメージを構築し Web サイトを動作させてみたいと思います。
Docker Desktop for Windowsの環境
簡単ではありますが、 Docker Desktop for Windows を構築する前に環境に関して触れてみたいと思います。
Windows 10 Pro | バージョン 21H2、OSビルド 19043.1165 |
WSL | バージョン 2 |
Docker Desktop for Windows | バージョン 4.0.0 (67817) |
なお、Docker Desktop for Windows を構築する Windows PC には、Windows 10 Pro をインストールした仮想マシンを使用します。
また、仮想マシンは入れ子になった仮想環境(Nested Hyprer-V)で動作しています。入れ子になった仮想環境(Nested Hyprer-V)の構築手順をご覧になりたい方はこちらをクリックしてください。
Docker Desktop for Windows の構築
では、Docker Desktop for Windows の構築手順を解説いたします。
Docker Desktop for Windows の入手
まず、Docker Desktop for Windows のインストーラーを入手方法を解説いたします。
Docker の公式サイトからインストーラーをダウンロードします。
Docker の公式サイトに接続し、[Download for Windows] をクリックします。
エクスプローラにてダウンロードフォルダを開きます。
Docker Desktop for Windows のインストール
続いて、Docker Desktop for Windows をインストール手順を解説いたします。
「Docker Desktop for Windows の入手」でダウンロードした「Docker Desktop Installer.exe」を実行すると「Installing Docker Desktop」ウィンドウが表示されます。
[Configuration] にて、[Install required Windows components for WSL 2] がチェックされていることを確認し、[OK] をクリックします。
Docker Desktop for Windowsのインストールが完了すると、サインアウトが促されます。
Docker Desktop for Windows の起動
続いて、Docker Desktop for Windows の起動後の手順を解説いたします。
Docker Desktop for Windowsを起動すると、サービス契約の変更に関する情報が表示されます。
「dockerダッシュボード」ウィンドウが表示されます。
[Get started with Docker in a few easy steps!] にて、[Start] をクリックすると、チュートリアルが表示されます。また、[Skip tutorial] をクリックすると、チュートリアルがスキップされます。
本稿では、チュートリアルをスキップします。
「dockerダッシュボード」ウィンドウの [Containers / Apps] が表示されます。
Docker Desktop for Windows の検証
Docker Desktop for Windows の検証手順を解説いたします。
以下、4パターンの検証を実施します。
·hello-world コンテナを利用し、イメージやコンテナの実行検証を実施
·hello-world コンテナを利用し、イメージやコンテナの削除検証を実施
·Apache が格納された httpd コンテナを利用し、Web サイトの実行検証を実施
·Web サイトでのディレクトリマウントの検証を実施
コンテナの実行検証
まず、hello-world イメージを取得し hello-world の実行検証を実施いたします。
Windows PowerShell を起動し hello-world を実行するため、以下のコマンドレットを実行します。
docker run hello-world
次に、「dockerダッシュボード」ウィンドウの [Images] を確認します。
Windows PowerShell から、以下のコマンドレットを実行することで Docker イメージを確認することができます。
docker images
次に、「dockerダッシュボード」ウィンドウの [Containers / Apps] を確認します。
Windows PowerShell から、以下のコマンドレットを実行することで Docker コンテナを確認することができます。
docker ps -a
イメージ、コンテナの削除検証
続いて、取得した hello-world コンテナ や hello-world イメージの削除検証を実施いたします。
イメージを削除する場合、「dockerダッシュボード」ウィンドウの [Containers / Apps] を開き、hello-world コンテナの横にあるゴミ箱アイコンをクリックします。
なお、ゴミ箱アイコンをクリックすると、コンテナ削除確認メッセージが表示されます。
Windows PowerShell から、以下のコマンドレットを実行することで Docker コンテナを削除することができます。
docker rm [コンテナID]
次に、イメージを削除する場合、「dockerダッシュボード」ウィンドウの [Images] を開きます。また、hello-world イメージのプルダウンメニューを開き、[Remove] をクリックします。
Windows PowerShell から、以下のコマンドレットを実行することで Docker イメージを削除することができます。
docker rmi [イメージID]
コンテナの実行検証(Web サイト)
続いて、httpd イメージを取得し Web サイトの実行検証を実施いたします。
Windows PowerShell から httpd イメージを取得するため、以下のコマンドレットを実行します。
docker pull httpd
次に、Windows PowerShell から以下のコマンドレットを実行し Docker イメージを確認します。
docker images
次に、Windows PowerShell から以下のコマンドレットを実行し Docker コンテナを実行します。
docker run -d -p 8080:80 httpd
次に、Windows PowerShell から以下のコマンドレットを実行し Docker コンテナを確認します。
docker ps -a
次に、Web ブラウザで ポート番号に8080番を指定し localhost に接続します。
ディレクトリマウントの検証
続いて、Web サイトでのディレクトリマウントの検証を実施いたします。
「ディレクトリマウントの検証」でも「コンテナの実行検証(Web サイト)」で設定したポート番号を使用します。そのため、以下のマンドレットを実行し、httpd コンテナを、一度、停止します。
docker stop [コンテナID]
次に、マウントするディレクトリにテスト用の HTML ファイルを配置します。
次に、以下のコマンドレットを実行し、httpd コンテナを実行します。
docker run -v /c/Users/tamao/Desktop/html:/usr/local/apache2/htdocs -p 8080:80 -d httpd
コマンドレットの実行後に、Windows からファイル共有に関するメッセージが表示される場合があります。
次に、Windows PowerShell から以下のコマンドレットを実行し Docker コンテナを確認します。
docker ps -a
次に、Web ブラウザで ポート番号に8080番を指定し localhost に接続します。
まとめ
以上が、Docker Desktop for Windows の構築と簡単な検証手順となります。
いかがでしたでしょうか。
今回は Docker Desktop for Windows の構築からですので、難しいことはやらず、慣れるために簡単なものから実施いたしました。
また、Windows PowerShell を使用してコンテナを構築しましたので、Windows PowerShell を常用している Windows ユーザーの方にも違和感はなかったのではないでしょうか。
Hyper-V などのハイパーバイザー型仮想化しか触れたことが無い場合、コンテナ型仮想化は、ややとらえずらい面もあるかとは思います。
例えば、コンテナ型仮想化は、ゲスト OS という概念がないため、Windows などの OS をインストールした仮想マシンが不要です。
ハイパーバイザー型仮想化は用途に合わせて仮想マシンを構築するので、1つのホストマシンで数台仮想マシンを構築するなんてことはざらです。
しかし、コンテナ型仮想化であればその必要はなく、Docker が構築できれば、あとは機能が含まれたイメージ(httpd や nginx、mysql など)をダウンロードしコンテナを追加または削除するだけの作業となります。
また、ハイパーバイザー型仮想化は仮想マシンを構築したあとに機能を追加し、また、設定変更が必要であったりと、環境ができあがるまでに時間がかかりましたが、コンテナ型仮想化であれば・・・言うまでもなく、素早く環境構築ができます。
用途によりますので、コンテナ型仮想化とハイパーバイザー型仮想化のどちらが優れているとは言えません。どちらにもメリット・デメリットがあります。
しかし、様々な仮想化技術を習得していれば、シチュエーションにあった仮想化が選択(提案)できるようになりますので、 ハイパーバイザー型仮想化を習得した次は、コンテナ型仮想化を習得してみてはいかがでしょうか。
もし、ハイパーバイザー型仮想化(Hyper-V など)に関しても詳しく知りたい方は、別の記事でまとめていますので、よろしければこちらをご覧ください。
次回は、Ubuntu イメージに Nginx をインストールしたオリジナル Docker イメージの作成手順を解説いたします。
最後までお読みいただきありがとうございました。
では。