Posted at

Docker Desktop for WSL2 を使い快適にWindowsでサーバ開発をしよう!


はじめに

私は元々Microsoft関連の案件やWindowsゲーム、コンシュマーゲーム、カーネル開発などを行っていました

時々サーバ開発も行いました

TCP/IPを使って直接サーバをかく場合はVisualStudioでコードを書いたり、それをgcc対応したりしていましたが

時代がWebフレームワークによる軽量開発が多くなり、WindowsにそのたびにApacheや言語をインストールして開発

コマンドプロンプトが貧弱なのでCygwinを使って

開発環境ごとにHDDを作ってHDD交換しながら仕事をしていた時もありました

しかし、WindowsでWeb開発環境を完成させるのは少し疲れます。本番環境がLinuxの場合は予期せぬ問題がおこります

私は2011年にMacbookProを買い、それ以降はMacでサーバ開発を行っていました

MacOS XはNetBSDベースのLinuxに優しいOSで非常に開発がしやすくなりました

MacPortsで簡単に環境構築できるし、Chefで環境を簡単に構築できる

そしてVMの時代がきて、Dockerの時代です

その頃 MacbookProが調子悪くなりWindowsへの乗り換えを行いました

Dockerがあるので Windowsでほぼ問題なくサーバ開発が出来ました!

ところが、パスの問題やシェルの問題などがあり、それを1つずつ対応していき

やっと問題なく開発できるようになりました

ここまでが過去の記事です

https://qiita.com/YukiMiyatake/items/73c7d6c4f2c9739ebe60

今回はWSL2を導入し、より快適にするつもりです


WSL2とは

Windows Subsystem Linuxの後継者です

WSLでは、LinuxコマンドをエミュレーションしてWindowsで動かしていたため

一部のソフトウェアが動きませんでしたnmapやtcpdumpなど

その動かないソフトウェアの一つがDockerです

そのため、Windowsでサーバ開発するには、WindowsにDockerをインストールし、それを使う必要がありました

WSL2はエミュレーションではなく、Hyper-V上で完全なLinuxが動くので、すべてのソフトウェアが動きます

当然、Dockerも動きます

試してみましょう


導入


WSL2のインストール

下記ドキュメントどおりにすればインストールできますが注意点が色々あります

https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-install

まず、Hyper-V上に構築されるので、Windows10 Pro 64bit 以上が必要と思っていましたが

どうやらHomeエディションでもWSL2はインストールできるそうです

https://devblogs.microsoft.com/commandline/announcing-wsl-2/

Windows 10ビルド 18917以降

なので、現状は 評価版のWindowsが必要です

そして現在私はOSのシャットダウンがだいたい失敗するようになりましたw

SnapCrab_NoName_2019-10-23_12-29-40_No-00.png

VirtualBoxなどHyper-Vと併用できないソフトウェアは使用できなくなる

そして、私は上記の手順でWSL2を導入しましたが、エラーでWSLが起動しなくなりましたSnapCrab_NoName_2019-10-23_12-29-6_No-00.png

ネットで色々な対処法がありました

OSのバージョンも3個ぐらいためしたけどダメで

私の場合は、Docker for Windowsをアンインストールで動くようになりました

そうですね、WSL2にDockerを入れるので Docker for Windowsは邪魔かもしれません


Dockerのインストール

https://www.docker.com/blog/5-things-docker-desktop-wsl2-tech-preview/

今回は Docker for Windowsではなく、Docker Desktop for WSL2 を使います

まだプレビューですが、ディスクI/Oが高速になったり色々なメリットがあるそうです

また、WSL2上にLinuxのDockerもインストールできるはずですが、今回は使いません

WSL2の導入は終わっているのでDocker Desktop for WSL2を導入します

上記より



Finally, download the Tech Preview Docker Desktop for WSL 2 Technical Preview



の部分をクリックすればダウンロードできます

そして注意点は、OSもDockerもPreview版なので不具合が多いです

私の場合はOSをシャットダウンしてもほぼ失敗して強制電源OFFしていますし

DockerもCheck Updateするとなぜかディスク容量がたりないと言われ、Dockerがアンインストールされておわります

念のため、WSL2のDockerを消しておきます。


bash

$ apt remove docker-ce

$ apt remove docker-ce-cli
$ apt remove docker-engine
$ apt remove docker-engine-cs
$ apt remove docker.io

また、 DOCKER_HOST を設定している場合は、その環境変数を削除しておきます

Dockerを起動し、メニューより WSL 2 Teck Previewを開く

SnapCrab_Settings_2019-10-23_15-33-38_No-00.png

StatusからDockerをStartさせると、WSL2から Dockerコマンドが使えるようになります!

いつものように docker run hello-world で確かめてみます

SnapCrab_選択yuki@DESKTOP-NF7SQ0F cWINDOWSsystem32_2019-10-23_15-37-19_No-00.png

動きましたね!

一通り仕事やOSSで使っていたdocker-composeも動きました

問題なさそうですね!

この後 無茶苦茶仕事した。