WindowsのVmmemのCPU使用率・メモリ逼迫による問題はDockerが原因


WindowsPCがずっとファンが回っており、ハードディスクがゴリゴリ動いているような事象が発生したので、タスクマネージャを開いてみると以下のように「Vemmem」というプロセスがゴリゴリ動いていました。

今回の事象を調べていったん改善したのでまとめます。

調べたところWindowsの「Docker Desktop」が影響していた

この事象として、WindowsのDocker上でコンテナは動かしていない状態になります。
また、Dockerコマンドを実行しても以下のようなエラーが発生してしまいます。

> docker ps
error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.

いろいろと調べたところ以下の記事が。
参照URL:
https://qiita.com/yoichiwo7/items/e3e13b6fe2f32c4c6120

要は、WSL2のメモリサイズを固定することでWindowsホストのメモリの逼迫を防ぐようです。

%USERPROFILE%\.wslconfigのコンフィグに以下の設定を行います。

「C:\Users\username」配下に以下を設定します。

ファイル名「.wslconfig」

[wsl2]
memory=6GB
swap=0

ただ、あまりWindowsPCのメモリをいじるのは面倒ですし、この設定忘れちゃったら何かあったときに面倒なので不採用とします。

Dockerアンインストール・入れなおし

結果、私はいったんDockerDesktopを入れなおすことにしました。
アンインストールは「コントロールパネル」>「プログラムのアンインストール」からDockerDesktopをアンインストールします。

アンインストール後、以下のページから再度DockerDesktopをダウンロードし、インストールします。
https://docs.docker.com/docker-for-windows/install/

Dockerコンテナは簡単に構築できるし、手順さえ覚えていれば特に苦ではないので、この方法にします。


Linux カーネル更新プログラム パッケージをダウンロードする

DockerDesktopインストール後、Linuxカーネル更新プログラムのパッケージをダウンロードするようにポップアップが発生します。

この時カーネル更新プログラムパッケージをインストールしていないと、上記と同じ事象が発生し、Dockerコマンドで以下のように同じエラーが発生します。

> docker ps
error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The system cannot find the file specified.

ということで、以下リンクからLinux カーネル更新プログラム パッケージをダウンロードし、インストールします。
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#step-4—download-the-linux-kernel-update-package

「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」という項目をクリックするとダウンロードが始まります。

Linuxカーネル更新プログラムインストール後、Dockerは正常に動きました。
いったんこれで様子みですね。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!