こんばんは。最近暑くなってきました。エアコンさんにはすでにたくさん頑張ってもらっています。
今回、Macで構築していた開発環境をWindowsでも再現したくなったため構築ログを記していきます。
環境
macで使っていた環境
- Docker Desktop for Mac
- Visual Studio Code(以下VSCode)
- Remote - Container を用いたdevcontainer上での開発
- Mac上にcloneしたリポジトリで直接開発
今回Windowsで構築した環境
- Windows 10 Pro バージョン2004 ( OS ビルド 19041.264)
- WSL2 Ubuntu 20.04
- Docker Hub
- Visual Studio Code – コード エディター | Microsoft Azure
環境構築していく
WSL2をインストールする
Dockerをインストールする前にWSL2のインストールを進めておく。(Docker for Desktopのインストール時にWSL2をバックエンドに設定するため)
基本は、以下サイトの手順を使う。
Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs
Powershellにて実行していく。
- "Linux 用 Windows サブシステム" オプション機能を有効にする
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- "仮想マシン プラットフォーム" オプション機能を有効にする
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
ここまで正常に完了したらOSの再起動を行う。
再起動が終わったら、Distributionのインストールを行う。
以下リンクからDistroを選択していく。好みや宗教でお好きなものを。今回はUbuntuを選択。
インストールがおわったら、WSLを起動してユーザーなどの初期設定を行っておく。
この状態になればOK。
インストールしただけではWSL versionが1のままなので、2にアップデートする。
WSL2で利用するLinuxカーネルをインストールする必要がある。
下記手順に従いインストールを行う。
WSL 2 Linux カーネルの更新 | Microsoft Docs
今後インストールするDistroのバージョンのデフォルトを2に設定する
wsl --set-default-version 2
すでにUbuntuをversion 1 でインストールしているため、以下に従いversionを2に設定する
Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs
wsl --set-version Ubuntu 2
version 2になればOK。
Docker Desktop for Windowsのインストール
以下より ”Get Docker” からダウンロードをインストールを行う。
インストール時に、 "Enable WSL2 Windows Features" のチェックが入っていることを確認しインストールをすすめる
インストールが完了したら一旦サインアウトし、サインインしなおす。これでインストールが完了。
Powershell上で docker run --rm -it alpine sleep infinity
を実行したあと、wsl上で docker ps
を実行し、windows上のdockerがWSL2内を参照していることを確認する。
Powershell上で実行
Ubuntu上で確認
これにてWSL2+Dockerの構築が完了。
VSCodeのインストール
以下より、インストールする。
VSCode本体のインストールが完了したら、Remote - ContainersとRemote - WSLのインストールを行う。
- Remote - WSL: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl
- Remote - Containers: https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
これにてVSCodeの構築が完了。
実際に開発するまでの流れ
Remote - Containers を用いたdevcontainer上の開発
windows上のdockerコマンドを実行するとWSL2上でコンテナが作成される状態になっているため、socketをtcpで公開したりといった複雑な設定は特に行う必要はない。
VSCodeのRemote - Container の項目から選択していく。今回は動作確認のため、Try Sampleからgoを選択した。
無事WSL2上のdockerを用いたVSCode Remote - Container 環境ができあがった。
Remote - WSL を用いて、WSL上にcloneしたリポジトリを参照して開発
これは、VSCode上のRemote - WSL: New Window でWSLに接続し、フォルダを開くから行うことができる。
tips: WindowsのExplorerからWSLのディレクトリにアクセスする
WSLにアクセスするためのパスが設定されており、 \\wsl$
でアクセスすることが可能。
explorer上でさくっとファイルを配置したい場合に便利。
ちなみにWSL上だと /mnt/c
とかにCドライブがマウントされていたりするので、そちらからアクセスすることも可能。
おわりに
この記事は、「今まで開発はMacbookで全て行っていたが、WSL2あるしWindowsでどこまで開発環境を整えられるか」のチャレンジも含めた構築でした。
Docker Desktop for MacはDisk I/Oの面で重く感じる事がありましたが、WSL2上のdockerはそういったことも特になかったように感じます。(肌感)
WSL2の登場とDocker DesktopのWSL2対応、VSCodeのWSL対応など、そろそろ実用で使えるレベルになってきたのかなあという印象を感じました。
VSCodeのWSL対応で、ほとんどLinux上で開発している感覚で作業ができるのがとても大きいと思います。
それでは。