5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OS再起動時にWSL2 for Docker Desktopでcannot find cgroup mount が出る

Posted at

この記事では基本的なWSL導入までの流れは汲みません。

進化中のWSL

WSL2から連携可能になったDocker Desktop
これでwindows上でもlinuxサーバ開発ができるヤッター!
面倒臭いデュアルブートの設定しなくて済むし、Aviutl使いながらdockerビルドとかもできるワーイ!
Microsoft Build 2020イベントでGPUサポートの話まで出た!nvidia dockerまで使えるようになったら最高や!

しかしながら、お披露目からそんなに経って無いということもあり動作に直結する細かいバグがちらほら見られる。

個人的にメンドくさいと思ってるのがタイトルの事象。

初回起動時

WSL構築当初はそもそもマウント先を指定する必要があるのでgit hub issueに則った方法は必須となる。

cgroups: cannot find cgroup mount destination: unknown 

上記エラーがでるので下記コマンドで対処

sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

これでdockerは難なく動くようになる。

OS再起動すると認識されなくなる

問題はここからでOS再起動時にdockerも立ち上がるように設定しておりdocker自体も問題なく起動しているようだが、
docker buildなりをWSL上で使おうとすると同じエラーが出て動かない。

sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

もう一度同じコマンドを打つと(当たり前だが)ディレクトリが存在しているエラーを吐き、
マウント解除してから同じコマンドぶつけても症状は変わらず。

調べてみると、どうもOS終了前の状態を記憶しているようで再起動時に同期が取れないことが原因のようである。
(リフレッシュ前にwindows側のdockerを操作するとWSL側のdockerの状態が一致していないことが確認できる)

対処法

同期取れててないなら再起動だ。もしくはWSLとdockerを連携したときの手順を思い返そう。
docker ->「setting」にある「resource」->「WSL Integration」をUbuntuを使おうとした場合、これをonにしたはずだ。
一旦offでリスタートしてからonに戻してリスタートするエラーが回避できた。

1.png

バージョン2.3.0.2の場合

コメント 2020-05-15 122035.png

五月頭にリリースされたバージョン2.3.0.2から画面が変わりました。
「Refresh」ボタンが追加されたようですが現状機能してないみたいです。今後のアップデートで実装されるのかな?

コメント 2020-05-15 121712.png

この場合「WSL Integration」の項目を全てオフにして「apply & restart」で適用させてから、もう一度項目すべてをonにして「apply & restart」すると
無事WSL上でdockerが使えるようになります。

自分の環境だと再起動するたびに必須なのですが、他の環境だとこの限りではないのかもしれません。

参考文献

5
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?