こんにちは、全力開発部の @konoka-iori です。

今回は、WSL2とDev Containerを使った開発環境を構築しようとしたのですが、無事沼った話をしようと思います。

インターネット上に脱Docker Desktopの記事はたくさんありますが、私のハマったポイントについてはあまり情報がなかったので、その時の話を備忘録を兼ねて書いておきます。

前に開発環境をDev Containerでコンテナー化してみたよという記事と、Docker Desktopをやめたよという記事も書いているので、そちらも参考にしてみてください。

開発環境をDev Containerを使ってコンテナー化してみた - 全力開発ブログ

Docker Desktop、やめました - 全力開発ブログ

なにがあったのか

次の2つの問題にぶち当たりました。

  1. 「Clone Repository in Container Volume(コンテナーボリュームにリポジトリを複製)」ができない
  2. Dev ContainerがWSL2内のDockerではなく、Windows側でDockerを使おうとする(もちろんWindows側のDockerがないのでエラーになる)

それぞれの問題について詳しく説明します。

「Clone Repository in Container Volume」ができない

原因はWSL2内でGitHubにログインされておらず、権限が不足してプライベートリポジトリをクローンできなかったためでした。

解決策

私の場合、 gh コマンドを使ってGitHubにログインすることで解決しました。

まず、

1
sudo apt install gh

gh コマンドをインストールし、ログインします。

1
gh auth login

上記のコマンドが正しく実行されると、以下の質問が表示されます。

  1. GitHub.comなのかGitHub Enterprise Serverなのか
  2. GitのプロトコルをHTTPSにするかSSHにするか
  3. GitHubにログインする方法(Webブラウザでログインするか、トークンを使うか)を選択します。
Note

私の場合は

  1. GitHub.com
  2. HTTPS
  3. Paste an authentication token

を選択してログインしました。

Tip
トークンでログインしたい場合は GitHub.com からPersonal access tokensを発行してください。

これでGitHubにログインできました。 Dev Container内でプライベートリポジトリもクローンできるようになり、問題が解決しました!

Dev ContainerがWindows側のDockerを使おうとする

原因は、Dev Containerの設定が正しく行われていないためでした。

こちらはいわゆる凡ミスですが、意外と気づかない落とし穴ですので気をつけてください。

解決策

VS Codeの設定ファイル(settings.json)に次の設定を追加します。

1
"dev.containers.executeInWSL": true

これでDev ContainerがWSL2内のDockerを使うようになり、問題が解決しました!

Note

厳密にはDev ContainerがWSL2内でCLIコマンドを実行するかどうかを設定するものです。

この設定を有効にすると、Dev Containerの実行するDockerコマンドがWSL2内で実行されるようになります。

まとめ

以下の記事の内容を実行しているときに発生した問題と解決策をまとめました。

なぜWSL2内でGitHubにログインされていないのか、記事執筆現在の私にはよく原因がわかりませんでした。

VS CodeでGitHubにログインしているのですが、WSL2内には引き継がれないのでしょうか……?

いずれにせよ、 gh コマンドでどうにかなってよかったです。

Docker Desktop、やめました - 全力開発ブログ