はじめに
私は元々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
VirtualBoxなどHyper-Vと併用できないソフトウェアは使用できなくなる
そして、私は上記の手順でWSL2を導入しましたが、エラーでWSLが起動しなくなりました
ネットで色々な対処法がありました
OSのバージョンも3個ぐらいためしたけどダメで
私の場合は、Docker for Windowsをアンインストールで動くようになりました
そうですね、WSL2にDockerを入れるので Docker for Windowsは邪魔かもしれません
Dockerのインストール
今回は 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を消しておきます。
$ 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を開く
StatusからDockerをStartさせると、WSL2から Dockerコマンドが使えるようになります!
いつものように docker run hello-world で確かめてみます
動きましたね!
一通り仕事やOSSで使っていたdocker-composeも動きました
問題なさそうですね!
この後 無茶苦茶仕事した。