こんにちは、全力開発部の @konoka-iori です。
今回は、WSL2とDev Containerを使った開発環境を構築しようとしたのですが、無事沼った話をしようと思います。
インターネット上に脱Docker Desktopの記事はたくさんありますが、私のハマったポイントについてはあまり情報がなかったので、その時の話を備忘録を兼ねて書いておきます。
前に開発環境をDev Containerでコンテナー化してみたよという記事と、Docker Desktopをやめたよという記事も書いているので、そちらも参考にしてみてください。
なにがあったのか
次の2つの問題にぶち当たりました。
- 「Clone Repository in Container Volume(コンテナーボリュームにリポジトリを複製)」ができない
- Dev ContainerがWSL2内のDockerではなく、Windows側でDockerを使おうとする(もちろんWindows側のDockerがないのでエラーになる)
それぞれの問題について詳しく説明します。
「Clone Repository in Container Volume」ができない
原因はWSL2内でGitHubにログインされておらず、権限が不足してプライベートリポジトリをクローンできなかったためでした。
解決策
私の場合、 gh
コマンドを使ってGitHubにログインすることで解決しました。
まず、
|
|
で gh
コマンドをインストールし、ログインします。
|
|
上記のコマンドが正しく実行されると、以下の質問が表示されます。
- GitHub.comなのかGitHub Enterprise Serverなのか
- GitのプロトコルをHTTPSにするかSSHにするか
- GitHubにログインする方法(Webブラウザでログインするか、トークンを使うか)を選択します。
私の場合は
- GitHub.com
- HTTPS
- Paste an authentication token
を選択してログインしました。
これでGitHubにログインできました。 Dev Container内でプライベートリポジトリもクローンできるようになり、問題が解決しました!
Dev ContainerがWindows側のDockerを使おうとする
原因は、Dev Containerの設定が正しく行われていないためでした。
こちらはいわゆる凡ミスですが、意外と気づかない落とし穴ですので気をつけてください。
解決策
VS Codeの設定ファイル(settings.json
)に次の設定を追加します。
|
|
これでDev ContainerがWSL2内のDockerを使うようになり、問題が解決しました!
厳密にはDev ContainerがWSL2内でCLIコマンドを実行するかどうかを設定するものです。
この設定を有効にすると、Dev Containerの実行するDockerコマンドがWSL2内で実行されるようになります。
まとめ
以下の記事の内容を実行しているときに発生した問題と解決策をまとめました。
なぜWSL2内でGitHubにログインされていないのか、記事執筆現在の私にはよく原因がわかりませんでした。
VS CodeでGitHubにログインしているのですが、WSL2内には引き継がれないのでしょうか……?
いずれにせよ、 gh
コマンドでどうにかなってよかったです。