光のエンジニア雑食記

光も闇も、あるんだよ

WSL2+Docker+VSCodeで優勝する

こんばんは。最近暑くなってきました。エアコンさんにはすでにたくさん頑張ってもらっています。

今回、Macで構築していた開発環境をWindowsでも再現したくなったため構築ログを記していきます。

環境

macで使っていた環境

  • Docker Desktop for Mac
  • Visual Studio Code(以下VSCode)
  • Remote - Container を用いたdevcontainer上での開発
  • Mac上にcloneしたリポジトリで直接開発

今回Windowsで構築した環境

環境構築していく

WSL2をインストールする

Dockerをインストールする前にWSL2のインストールを進めておく。(Docker for Desktopのインストール時にWSL2をバックエンドに設定するため)

基本は、以下サイトの手順を使う。

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

Powershellにて実行していく。

  1. "Linux 用 Windows サブシステム" オプション機能を有効にする
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  1. "仮想マシン プラットフォーム" オプション機能を有効にする
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

ここまで正常に完了したらOSの再起動を行う。

再起動が終わったら、Distributionのインストールを行う。

以下リンクからDistroを選択していく。好みや宗教でお好きなものを。今回はUbuntuを選択。

https://aka.ms/wslstore

インストールがおわったら、WSLを起動してユーザーなどの初期設定を行っておく。

f:id:suzutan0s2:20200607220449p:plain
Ubuntu 初期設定

この状態になればOK。

インストールしただけではWSL versionが1のままなので、2にアップデートする。

f:id:suzutan0s2:20200607221201p:plain

WSL2で利用するLinuxカーネルをインストールする必要がある。

下記手順に従いインストールを行う。

WSL 2 Linux カーネルの更新 | Microsoft Docs

f:id:suzutan0s2:20200607221614p:plain
WSL用Linuxカーネルのインストール完了画面

今後インストールするDistroのバージョンのデフォルトを2に設定する

wsl --set-default-version 2

f:id:suzutan0s2:20200607221721p:plain

すでにUbuntuをversion 1 でインストールしているため、以下に従いversionを2に設定する

Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs

wsl --set-version Ubuntu 2

f:id:suzutan0s2:20200607222444p:plain

version 2になればOK。

Docker Desktop for Windowsのインストール

以下より ”Get Docker” からダウンロードをインストールを行う。

Docker Hub

インストール時に、 "Enable WSL2 Windows Features" のチェックが入っていることを確認しインストールをすすめる

インストールが完了したら一旦サインアウトし、サインインしなおす。これでインストールが完了。

Powershell上で docker run --rm -it alpine sleep infinity を実行したあと、wsl上で docker ps を実行し、windows上のdockerがWSL2内を参照していることを確認する。

Powershell上で実行 f:id:suzutan0s2:20200607223608p:plain

Ubuntu上で確認 f:id:suzutan0s2:20200607223624p:plain

これにてWSL2+Dockerの構築が完了。

VSCodeのインストール

以下より、インストールする。

azure.microsoft.com

VSCode本体のインストールが完了したら、Remote - ContainersとRemote - WSLのインストールを行う。

これにてVSCodeの構築が完了。

実際に開発するまでの流れ

Remote - Containers を用いたdevcontainer上の開発

windows上のdockerコマンドを実行するとWSL2上でコンテナが作成される状態になっているため、socketをtcpで公開したりといった複雑な設定は特に行う必要はない。

VSCodeのRemote - Container の項目から選択していく。今回は動作確認のため、Try Sampleからgoを選択した。

f:id:suzutan0s2:20200607225154p:plain

無事WSL2上のdockerを用いたVSCode Remote - Container 環境ができあがった。

f:id:suzutan0s2:20200607225500p:plain

Remote - WSL を用いて、WSL上にcloneしたリポジトリを参照して開発

これは、VSCode上のRemote - WSL: New Window でWSLに接続し、フォルダを開くから行うことができる。

f:id:suzutan0s2:20200607230345p:plain

tips: WindowsのExplorerからWSLのディレクトリにアクセスする

WSLにアクセスするためのパスが設定されており、 \\wsl$ でアクセスすることが可能。

f:id:suzutan0s2:20200607230539p:plain

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上で開発している感覚で作業ができるのがとても大きいと思います。

それでは。