WSL2 + Docker + VS Code + Go 環境構築
はじめに
WSL2 + Docker + VS Code + Go の環境を構築したのでメモを残しておきます。
前提
私の環境は以下の通りになります。
Docker Desktopについてはインストール済みなので、これについてはインストール手順の記載は省略します。
- Windows10 Home
- Docker Desktop インストール済み
WSL2 設定手順
下記のサイトに従い、手動インストールを行っていきます。
docs.microsoft.com
Linux 用 Windows サブシステムを有効にする
Windows PowerShell を管理者権限で実行した後、下記のコマンドを実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
コマンドが正常終了すれば以下のメッセージが表示されます。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 展開イメージのサービスと管理ツール バージョン: 10.0.18362.1379 イメージのバージョン: 10.0.18363.1440 機能を有効にしています [==========================100.0%==========================] 操作は正常に完了しました。
WSL2の実行に関する要件を確認する
WSL2 を実行するには下記の要件を満たしている必要があります。
- x64 システムの場合:バージョン 1903 以降、ビルド 18362 以上。
- ARM64 システムの場合:バージョン 2004 以降、ビルド 19041 以上。
バージョンとビルド番号を確認するために、下記のように「winver」を実行してください。
「winver」を実行すると、下記のようにバージョンとビルド番号が表示されます。
私の環境ではバージョンとビルド番号は以下のようになっており、WSL2の要件を満たしていることになります。
バージョン1909(OSビルド 18363.1440)
仮想マシンの機能を有効にする
Windows PowerShell 上で下記のコマンドを実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
コマンドが正常終了すれば以下のメッセージが表示されます。
PS C:\WINDOWS\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart 展開イメージのサービスと管理ツール バージョン: 10.0.18362.1379 イメージのバージョン: 10.0.18363.1440 機能を有効にしています [==========================100.0%==========================] 操作は正常に完了しました。
Linux カーネル更新プログラムパッケージをダウンロードする
下記のサイトからLinux カーネル更新プログラムパッケージをダウンロードします。
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
ダウンロードした更新プログラムパッケージを実行し、以下の画面が表示されればインストール成功です。
WSL2 を既定のバージョンとして設定する
下記コマンドを実行して、WSL2 を既定のバージョンとして設定します。
wsl --set-default-version 2
正常に設定されると以下のメッセージが出力されます。
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
Linuxディストリビューションをインストールする
下記のサイトにアクセスし、Linuxディストリビューションをインストールします。
今回はUbuntu 20.04 LTSをインストールしました。
https://aka.ms/wslstore
インストール後、下記画面からLinuxディストリビューションを起動します。
インストール後、ユーザー名とパスワードを設定します。
Docker Desktop 設定
設定画面を開き、「Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend)」にチェックが付いていることを確認します。
※Windows Homeを使用している場合、デフォルトでチェックが入っています。
Go 設定手順
下記のサイトに従い、手動インストールを行っていきます。
golang.org
Go のインストーラーをダウンロードする
下記コマンドを実行して、Go のインストーラーをダウンロードします。
wget https://golang.org/dl/go1.16.5.linux-amd64.tar.gz
Go をインストールする
下記コマンドを実行して、Go をインストールします。
※必要に応じて「sudo」を付与して、コマンドを実行してください。
rm -r/f /usr/local/go tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
下記コマンドを実行して、環境変数を設定します。
export PATH=$PATH:/usr/local/go/bin
下記コマンドを実行して、Go がインストールされていることを確認します。
go version
VS Code設定手順
下記のサイトを参考にして、VS Codeの設定を行います。
qiita.com
Go のプロジェクトフォルダを作成する
下記コマンドを実行して、Go のプロジェクトフォルダを「go-sample」という名前で作成します。
cd ~ mkdir go-sample
Dockerfile と devcontainer.json を作成する
下記コマンドを実行して、フォルダを「.devcontainer」という名前で、またファイルを「Dockerfile」と「devcontainer.json」という名前で作成します。
cd ~/go-sample/ mkdir .devcontainer touch ~/go-sample/.devcontainer/Dockerfile touch ~/go-sample/.devcontainer/devcontainer.json
下記のサイトを参考にして、Dockerfile と devcontainer.jsonに設定を記述します。
qiita.com
Remote Development をインストールする
Remote Development をインストールします。
Docker コンテナに接続する
画面左下の「WSL: Ubuntu-20.04」をクリックし、「Remote-Containers: Reopen in Container」を選択する。
コンテナへの接続が成功すると、画面左下に「Dev Container: go-sample」と表示される。
main.goを作成する
go-sample 配下にmain.go を作成して、下記のソースを記述する。
package main import "fmt" func main() { fmt.Println("Hello, world") }
Ctrl + F5 でmain.go を実行し、正常終了すれば下記のメッセージが表示されます。
Hello, world