はじめに
WSL2 での環境構築にあたって、表題の件でちょっと操作が必要だったりしたので、書き留めます。
環境
Windows10 22H2(OSビルド:19045.3324)
WSL2
WSL で git clone
ができない(パーミッションの問題が発生する)
git clone
のみならず、ファイルの書き込みなどが起きるアプリケーションを WSL 上の Docker で動かそうとするとパーミッションのエラーになるようです。
対処としては、
- コマンドを実行する
一時的な手段のようなので、都度実行が必要。
sudo mount -t drvfs C: /mnt/c -o metadata
参考:【WSL】git fatal: could not set 'core.filemode' to 'false'になる
- 設定ファイルに書き込んで保存する
WSL のディストリビューションに対する設定ファイルに書き込んでおく方法。
(1)ルートユーザーで WSL に入る
(2)wsl.conf
ファイルを作成する
場所に決まりがありそうなのでご注意(参考)。
wsl.conf
はそのディストリビューションのみに対する設定なので、対象が複数ある場合はそれぞれで作る必要あり。
sudo touch /etc/wsl.conf
(3)wsl.conf
を開く
vi /etc/wsl.conf
(4)編集モードに入る
i
を押すと編集できるようになります。
(5)オプションを追加
[automount]
options = "metadata"
(6)ESC
で編集モードから抜けて、:wq
を入力してエンターする(上書き保存)
(7)WSL を再起動して、入り直す
WSL --shutdown
や wsl -t
で一度ディストリビューションを終了後、再度 WSL に入る。
これで、パーミッション関連のエラーは出なくなると思います。
参考:WSL2上のDockerでMySQLを構築する際のpermissionsの対策
GPU を WSL 上の Docker で使えるようにする
WSL 上の Docker で、GPU を使って何かをしたい場合、そのままの状態だと下記のようなエラーが出る場合があります。
Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
この場合は、WSL のディストリビューションに NVIDIA Container Toolkit を入れる必要があります。
NVIDIA Container Toolkit のインストール
公式の手順に従ってください。
ページとしては長いですが、Docker に関しては途中から始まる Docker
というタイトルが付いたセクションです。