今回はWSL2にDocker CEをインストールして .NET開発環境を作成する方法ついてお届けします。
本記事ではWSL2にインストールしたDocker CEと、Visual Studio Codeの拡張機能「Remote Development」に含まれる「Dev Containers」を使用して、.NET開発環境をコンテナで作成する方法を試してみます。
前提条件
事前にローカル環境の準備をしておきます。以下のようにWindows OSとWSL2、Visual Studio Codeをインストールしておきます。
- Windows 11。もしくはWindows 10 バージョン 2004(Build 19041以上)
- WSL2(Ubuntu 20.04)をインストール済み
- Visual Studio Code(Remote Development拡張機能をインストール済み)
Docker CEをインストール
Dockerの公式サイトでは、Docker CEをUbuntuへインストールする方法が紹介されています。
こちらの「Install using the apt repository」の手順でUbuntuにDocker CEをインストールします。
一般ユーザーでもdockerを使えるように権限を付与する
root
以外のユーザーがdocker
コマンドを使用できるように設定しておきます。こちらもDockerの公式サイトの「Manage Docker as a non-root user」で設定方法が紹介されています。
これでsudo
が不要でdocker
コマンドを使用できるようになります。
システムの起動時にDockerを起動するように設定する
こちらもDockerの公式サイトの「Configure Docker to start on boot with systemd」で設定方法が紹介されています。
これでUbuntuが起動した際にDockerも自動的に起動するようになります。
動作確認
Ubuntuを再起動してから、一般ユーザーでservice docker status
を実行してDockerが起動しているかを確認します。
次にHello Worldイメージを実行します。以下のように「Hello from Docker!」が表示されていれば成功です。
Dev Containersを設定する
Visual Studio Codeでコマンドパレットから「WSLへの接続」を選択してUbuntuに接続します。
Ubuntuの任意のフォルダを指定して開きます。ここでは/home
にあるユーザーのホームディレクトリを設定します。
Dev Containersの構成ファイルを追加します。コマンドパレットから「開発コンテナー構成ファイルの追加」を選択して、事前に用意されているC#用の構成ファイルを追加します。.NETのバージョンは7.0、その他の機能追加はナシとして追加します。
.devcontainer
フォルダが作成され、その配下にあるdevcontainer.json
が表示されます。右下に表示される通知から「コンテナーで再度開く」をクリックします。
これでDev Containersで .NET(C#)開発環境が使えるようになります。ターミナルでdotnet --version
を実行すると、以下のようにコンテナにインストールされている .NETのバージョンが表示されます。
確認してみる
ターミナルからdotnet new console -o HelloWorld
を実行してコンソールアプリケーションを作成します。
ターミナルからcode -r HelloWorld
を入力してHelloWorldフォルダを開きます。右下に表示される通知から「Yes」をクリックします。.vscode
フォルダの配下にデバッグやビルドに必要なtasks.json
とlaunch.json
が追加されます。
F5をクリックして作成したコンソールアプリケーションをデバッグ実行します。以下のように「Hello, World!」が表示されていれば成功です。
さいごに
今回はWSL2とDocker CE、そしてDev Containersを使用して .NET開発環境を作成する方法を試してみました。.NETのバージョンごとにDev Containersの構成ファイルを用意すれば特定のバージョンでの開発やテストなど、いろいろな条件を指定して利用することができそうです。また、開発環境を利用するまでの手間が多少かかってしまいますが、Docker Desktopをインストールする必要がないのでライセンスの心配をする必要がないのはメリットといえそうです。