7
2

More than 3 years have passed since last update.

Docker Desktop for WindowsをWindows 10 Homeで使ってみた

Last updated at Posted at 2020-12-17

はじめに

こんにちは。ハセガワです。
弥生Advent Calendar 2020の記事として投稿しています。

個人の趣味として自宅でDocker Desktop for WindowsをWindows 10 Homeで使ってみました。
今回は、Docker Desktop for Windowsを使うにあたっての準備や、使ってみた感想などについて記事にしてみました。

自宅のWindows 10環境

・Windows 10 Home Edition
・64bit版 (※32bit版だと、WSLが利用できません!)

使うことになった経緯

  • Dockerを用いた開発への興味

もともと、技術の勉強を兼ねてGoogle Cloud Platform(GCP)にWebアプリをデプロイしておりました。
その際、昨今の流行(?)であるDockerを使ってみたいと思っていました。

  • 挫折

家のPCのWindows 10は「Home」エディションであるため、Hyper-Vが使えません。
Windows 10 HomeでDockerを利用するための方法を少し調べたのですが、「環境構築がちょっと面倒くさそうだな・・・」と思い、すこし敬遠していた節がありました。

  • 転機

そんな怠惰な私の耳元に「Windowsのバージョン2004からはWSL2Docker Desktop for WindowsがWindows 10 Homeでも使えますよ。Hyper-Vがなくても使えますよ。」という情報が飛び込んできました。1
「これは使ってみるしかない!」と。

※WSL2とは

Windows Subsystem for Linux 2の略。
Windows上でLinuxを動かす仕組みのことです。

WSL1とWSL2の違いについては、以下のMicrosoft社のドキュメントに詳細が記載されています。
https://docs.microsoft.com/ja-jp/windows/wsl/compare-versions

準備

簡単に列挙すると、以下の準備を経てDocker Desktop for Windowsが使えるようになりました。
1. Windows 10のバージョンアップ
2. Docker Desktop for Windowsのインストール
3. WSL2のインストール
※2と3はたまたま逆になってしまった感がありましたので・・・詳細は後述します。

1. Windows 10のバージョンアップ

WSL2が使用できるのはWindows 10のバージョン「2004」からです。1
怠惰な私は、長らくアップデートを放置していたため、バージョンは「1909」のままでした。
「設定」→「更新とセキュリティ」→「Windows Update」を確認すると、新しいWindowsのバージョンが取得可能でしたので、あまりよく確認せず更新しました。
更新後、Windowsのバージョンを確認すると「20H2」になっていました。
「え?H2ってなに?水素・・・?」
少し調べてみると、Windows 10 October 2020 Updateとのこと・・・。
つまり、「2004」より新しいバージョンです。
これにて、Windows 10のバージョンアップは無事完了しました。

2. Docker Desktop for Windowsのインストール

以下のサイトからDocker Desktop for Windowsをダウンロードし、インストールしました。
https://hub.docker.com/editions/community/docker-ce-desktop-windows

3. WSL2のインストール

先ほどの手順で、Docker Desktop for Windowsを立ち上げると、以下のメッセージが・・・
キャプチャa.PNG
「そういえば、WSL2をインストールしていなかったな・・・」
順序が若干ごちゃごちゃになってしまいましたが、以下のサイトから「x64マシン用WSL2 Linux カーネル更新プログラムパッケージ」をダウンロードし、インストールしました。
https://aka.ms/wsl2kernel

Docker Desktop for Windowsを使ってみる

起動!

準備もできたので、早速Docker Desktop for Windowsを起動します。
以下のような画面が立ち上がりました。
capture_ (5).PNG

こちらは起動中のコンテナの一覧が表示される画面です。今はコンテナが1つも動いていないためこのような表示になっています。
画面左部の「Images」をクリックすると以下のような画面が開きます。
capture_ (6).PNG

ここにはDockerイメージの一覧が表示されます。今はイメージが1つも存在しないため、このような表示になっています。

イメージの作成

イメージの作成はコマンドプロンプトか、Windows PowerShellから行います。
とりあえず、どのように動くのか見てみたかったので、以下のDockerfileを作成しました。
80ポートを開放し、Apacheと.NET CoreのSDKをインストールします。

FROM centos:7
RUN echo "now building..."
RUN yum -y install httpd
EXPOSE 80
RUN rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
RUN yum -y install dotnet-sdk-3.1

Dockerfileを置いたディレクトリでコマンドプロンプトを起動し、いざ、Docker Buildを実行します。

cmd.exe
作業ディレクトリ>docker build -t testmycontainer .
[+] Building 1.8s (9/9) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.0s
 => => transferring dockerfile: 32B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/centos:7                                                        1.8s
 => [1/5] FROM docker.io/library/centos:7@sha256:0f4ec88e21daf75124b8a9e5ca03c37a5e937e0e108a255d890492430789b60e  0.0s
 => CACHED [2/5] RUN echo "now building..."                                                                        0.0s
 => CACHED [3/5] RUN yum -y install httpd                                                                          0.0s
 => CACHED [4/5] RUN rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm           0.0s
 => CACHED [5/5] RUN yum -y install dotnet-sdk-3.1                                                                 0.0s
 => exporting to image                                                                                             0.0s
 => => exporting layers                                                                                            0.0s
 => => writing image sha256:6c50ce36ff73cec713b16e6384a8cb7d7ce35db507fb92dee249f77f53396bde                       0.0s
 => => naming to docker.io/library/testmycontainer                                                                 0.0s

※この記事の作成のために何度かDocker Buildを実行したため、初回実行の時よりログがシンプルになっています。

Docker Desktop for Windowsでイメージの一覧を確認すると・・・
capture_ (7).PNG

イメージが作成されたことを確認できました。

コンテナの起動

先ほど作ったイメージからコンテナを生成し、実行したいと思います。
カーソルをイメージ名の行に合わせると「RUN」のボタンが表示されので、クリックします。
capture_ (8).PNG

すると、コンテナ名やポートの選択画面が表示されるので入力し、「RUN」をクリックします。
capture_ (9).PNG

そして、画面左部の「Containers/Apps」をクリックし、実行中のコンテナを確認します。
capture_ (4).PNG

おお!動いている!
一応コマンドのほうでもdocker psコマンドで確認してみましょう。

cmd.exe
作業ディレクトリ>docker ps
CONTAINER ID   IMAGE                    COMMAND       CREATED         STATUS         PORTS     NAMES
d1eee1f16576   testmycontainer:latest   "/bin/bash"   2 minutes ago   Up 2 minutes   0.0.0.0:49153->80/tcp    Test

ちゃんと動いているみたいですね!

おわりに

これからはWindows 10 Homeでもローカルで開発したプログラムがDockerで動くかを確認し、リモートの本番環境(個人のお遊びの範囲ですが)でデプロイができるのでとても便利になったなぁと思います。

時間があるときに、デプロイ等の記事も続けてアップしたいと思います!


  1. 累積更新プログラムを適用すれば、バージョン1903/1909でもWSL2が利用できます。
    https://forest.watch.impress.co.jp/docs/news/1272017.html 

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2