317
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

Windows 10 HomeへのDocker Desktop (ver 3.0.0) インストールが何事もなく簡単にできるようになっていた (2020.12時点)

本記事は「Docker Advent Calendar 2020」の21日目のエントリとなります。
アドカレと関係なくブログに書こうと思ってましたが、丁度カレンダーが空いていたので滑り込みました。


Docker Desktop for Mac and Windows | Docker

Windows 10 Home EditionもDockerのインストールがとても簡単になっていました。
Docker Composeも標準で使用できます。

というか、昔(大体2年前くらい)はHome Editionには(Hyper-Vが使えず)インストールできず、WSL使ってもDocker Composeで難ありで、Docker Toolboxはサポート終了と八方ふさがりだったりしましたが、少し前にWSL2対応やHomeでもHyper-V対応などが進んでDocker Desktopが使えるようになりました。
以前苦戦して結局VMのLinuxでDocker入れてそのまま利用してる人(私)も、改めてWindowsへDockerをインストールし、VS CodeのRemote Container使った環境などを作っても良いと思います。

環境

  • Windows 10 Home バージョン1909 (OSビルド18363.1256) 64ビット (RAM 8GB)
    • (古いレッツノートJ10)
  • Docker Desktop for Windows 3.0.0
  • Docker 20.10

準備

Docker Desktop for Mac and Windows | Docker

ここから「Docker Desktop Installer.exe」をダウンロードしておきます。
2020.12.21時点で3.0.0

よく、PowerShellを使った設定やコントロールパネルの「Windowsの機能の有効化または無効化」で「Hyper-Vを有効にする」「仮想マシンプラットフォームを有効にする」などの事前準備が書かれた記事がありますが実は必要ないです。Docker Desktopのインストーラが自動でやってくれます

インストール

ダウンロードしたDocker Desktop Installer.exeを実行します。
チェックはデフォルトのまま「OK」押下します。

image.png

ちなみにWindows 10 Proの場合はHyper-Vの有効化のチェックも表示されますが、デフォルトチェックのままでインストールの流れはHomeもProも同様です。

image.png

しばらく待てばインストールが完了します。
「Close and restart」押下するとWindows OSが再起動されます。

image.png

これで終わりだったら本当に簡単すぎるのですが、WSL2のインストールで追加の作業が必要です。
Windowsが起動すると「WSL 2 installation is incomplete.」という次のダイアログが表示されます。

image.png

WSL2で使うLinuxカーネルのアップデートが必要なので、表示されているリンクにアクセスします。(このダイアログは表示したままにしておきます)

https://aka.ms/wsl2kernel
(ちなみに 2020.12.21時点でリンク先は日本語です)

image.png

表示されている通り、「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」(msiファイル)をダウンロードして、実行(インストール)します。

image.png

「Next」押下でインストールが始まり、割とすぐに完了します。

image.png

完了したら「Finish」押下して画面を閉じます。

これでWSL2の準備も完了したので、最初に表示されていたダイアログの「Restart」を押下します。
このRestartはWindowsではなくDockerのプロセスが再起動されます。
image.png

ちなみにこの再起動前は、タスクトレイに常駐するDockerのアイコンが赤いエラー状態となっています。
image.png

再起動するとこの通り。
image.png

これでインストールは完了です。
「Windowsの機能の有効化または無効化」を事前設定していなくても、必要な機能が有効になっていることも確認できます。

image.png

チュートリアル

インストール完了・再起動してしばらく待ってDockerが正常に起動すると、以下のようにDocker Desktopの画面が起動します。

image.png

2分程度で完了するチュートリアルがあるので、やってみたい人は「Start」押下します。

image.png

こんな感じで、左側にコマンドが表示されるのでその通りに右側のターミナルで実行することでDockerのビルドや実行を試すことができます。

動作確認

チュートリアルの画面が起動した時点で、ターミナルなどからCLIでもバージョン確認できます。

PS C:\Users\zaki> docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.4
 Version:           20.10.0
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        7287ab3
 Built:             Tue Dec  8 18:55:31 2020
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.0
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       eeddea2
  Built:            Tue Dec  8 18:58:04 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
PS C:\Users\zaki> docker-compose version
docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.1c  28 May 2019

hello world

hello worldコンテナもあるけれど、この時期なので以下を実行してみましょう。
(実行結果はぜひお手元の環境で試してみてください)

docker run -it lukaszlach/merry-christmas

実行すると以下の表示のあとにいい感じの表示がされるはずです。
(停止はCtrl-c)

PS C:\Users\h_miyazaki> docker run -it lukaszlach/merry-christmas
Unable to find image 'lukaszlach/merry-christmas:latest' locally
latest: Pulling from lukaszlach/merry-christmas
4c288452ea93: Pull complete
Digest: sha256:00481ac02655c8e43b218abac6409c410789e7809a53a370576ef537adf46909
Status: Downloaded newer image for lukaszlach/merry-christmas:latest

元ネタ

Docker Compose

docker-composeコマンドも使えるので、こっちも試してみます。

試すのはGROWI Wiki(を、提供されているものをドキュメントの手順そのまま使う)。
(おまけ: Rook/Cephのブロックストレージとオブジェクトストレージを使ってGROWI WikiをKubernetesで動かす)

まずリポジトリをgit cloneします。
もしGitをインストールしてない場合は、zipのダウンロードでも大丈夫です。

zipを展開してdocker-compose.ymlファイルのあるディレクトリでdocker-compose upコマンドを実行します。

PS C:\Users\zaki\src> cd .\growi-docker-compose-master\
PS C:\Users\zaki\src\growi-docker-compose-master> docker-compose up
Creating network "growi-docker-compose-master_default" with the default driver
Creating volume "growi-docker-compose-master_growi_data" with default driver
Creating volume "growi-docker-compose-master_mongo_configdb" with default driver
Creating volume "growi-docker-compose-master_mongo_db" with default driver
Creating volume "growi-docker-compose-master_es_data" with default driver
Pulling mongo (mongo:4.4)...
4.4: Pulling from library/mongo
f22ccc0b8772: Pull complete
3cf8fb62ba5f: Pull complete

...

ちなみに複数のイメージをダウンロードし、ビルドも行うのでそれなりに時間がかかります。
初回はGROWI本体が起動した後にDBの初期化なども行われるので、ログが流れてしまいますが、

app_1            | [2020-12-19T08:55:48.455Z]  INFO: growi:plugins:PluginService/77 on 0399606d9dd5: load plugin 'growi-plugin-attachment-refs'
app_1            | [2020-12-19T08:55:48.462Z]  INFO: growi:plugins:PluginService/77 on 0399606d9dd5: load plugin 'growi-plugin-lsx'
app_1            | [2020-12-19T08:55:48.467Z]  INFO: growi:plugins:PluginService/77 on 0399606d9dd5: load plugin 'growi-plugin-pukiwiki-like-linker'
app_1            | express-validator: requires to express-validator/check are deprecated.You should just use require("express-validator") instead.
app_1            | [2020-12-19T08:55:48.844Z]  INFO: growi:crowi/77 on 0399606d9dd5: [production] Express server is listening on port 3000

このようにExpress server is listening on port 3000と表示されれば、ブラウザで http://localhost:3000 にアクセスすればGROWI Wikiにアクセスできます。

image.png

あとは初期ユーザーを作成すればWikiにログインでき、初期設定(Wiki名やファイルアップロード設定)を行えば普通に利用できます。
(ファイルアップロード設定は「MongoDB(GridFS)」を選択すれば内部DB使ってファイルアップロードできるようになります)

こちらもCtrl-cで停止しますが、Wikiのデータは停止しても残ります。
オプションの-dを追加してdocker-compose up -dと実行すればバックグラウンドで実行するので、通常利用時はこちらが良いかもしれません。

VS Code with Remote Containers

Docker DesktopをインストールしたPCにVS CodeRemote Development拡張を入れれば、Remote Containersを使って「Windows上の指定ディレクトリをVolumeマウントしたコンテナ上でVS Codeのリモート実行」というイマドキのコンテナを使った開発・作業環境も作れます。
例えば左下の接続アイコン押下すると表示されるメニューで「Remote-Containers: Open Folderin Container...」で作業用のディレクトリを選択し、Ubuntuなど任意のコンテナイメージを選択すれば、指定したディレクトリがコンテナ内にマウントされた状態でUbuntuコンテナを利用できます。

image.png

メニューの「表示 > ターミナル (View > Terminal)」またはCtrl-@でbashのターミナルが表示されるので、必要な追加パッケージがあればaptyumでインストールももちろんできます。

image.png

【連載】WSL2、Visual Studio Code、DockerでグッとよくなるWindows開発環境 〜 その4:Visual Studio Code、Dockerで改善!! 〜 | SIOS Tech. Lab

Docker ComposeとVS Code連携 (2021.02.19追記)

Docker Composeを使ってデプロイしたコンテナがある場合は、Docker Desktopを起動したときに表示されるContainer Listでマウスカーソルを合わせると「Open in Visual Studio Code」というボタンが表示されます。

2021-02-19_21h43_38.png

このボタンを押下すると、このコンテナを起動したときに使ったCompose file(docker-compose.ymlファイル)のあるディレクトリをVS Codeで開いてくれます。

Compose fileってどのディレクトリに置いて使うかきちんと決めてないと、割とよく行方不明になってしまうんですが(私だけ?)、この機能があればその心配が無くなるので嬉しいですね。

この機能は特に拡張等は不要のようで、(3.0.0を入れたときは気付かなかったですが)少なくとも現在の3.1.0では標準で利用可能です。

まとめ

Windows 10 HomeへのDocker Desktopのインストールを行い、使用例としてコマンドラインでのdockerおよびdocker-composeと、VS CodeのRemote Containers機能について紹介しました。

これから新しくDockerさわってみたいけどインストール方法がよくわからないという方、以前やってみようとしたけど技術的に困難でWindowsでは諦めていた方、現在はWindowsのOSの設定は特に必要なくインストールできるようになっていますので、ぜひ今のDockerをさわってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
317
Help us understand the problem. What are the problem?