Docker Desktop 環境のメモリ上限を変更するには?

Docker

Docker Desktop 環境でコンテナを動かしていますが、実メモリよりも少ない環境で動いているので、メモリの割当を増やせるかどうかを試してみました。WSL 2 backend を使用している環境に限定の話。

概要

Docker Desktop は WSL2 のメモリ制限に影響を受けます。Windows10のデフォルトだと WSL2 に割り当てられるメモリは ホスト側のメモリの80%となるようです。手元の環境を確認したところでは、以下のようになっていました。

ホストPCのメモリWSLのメモリ
Windows10 64GB50GB
Windows10 128GB100GB
Windows11 16GB8GB

WSLのUbuntuでメモリ容量を確認するとこんな感じ。(Win10 64GB RAMの環境)

~$ free
              total        used        free      shared  buff/cache   available
Mem:       52496528      110552    52281920          68      104056    51956912
Swap:      13631488           0    13631488

WSL2のメモリを増やせば、Docker Desktopに割り当てできるメモリも増やせるということになります。

試した環境

Windows 10 Pro (21H2)
OSビルド: 19044.1741
実装RAM: 64.0GB
Docker Desktop 4.8.2 (79419) WSL 2 backend

設定方法

Docker Desktop をWSL2環境で動かしている場合、設定画面には以下のように、リソースは Windows側の管理ですと表示されます。

具体的には .wslconfig というファイルを作成し、そこに設定を書いていくことになります。

.wslconfig

ディレクトリに格納 %UserProfile% されます。

WSL 2 バージョンとして実行されているインストール済み Linux ディストリビューション全体で設定をグローバルに構成するために使用されます。

WSL 2 によって実行されるディストリビューションにのみ使用できます。 WSL 1 として実行されているディストリビューションは、仮想マシンとして実行されていないので、この構成の影響を受け取る必要があります。

%UserProfile% ディレクトリに移動するには、PowerShell で cd ~ を使用してホーム ディレクトリ (通常は、それがユーザー プロファイル C:\Users\<UserName> です) にアクセスするか、Windows エクスプローラーを開き、アドレス バーに「%UserProfile%」と入力します。 ディレクトリ パスは、 のように表示されます C:\Users\<UserName>\.wslconfig。

引用元: https://docs.microsoft.com/ja-jp/windows/wsl/wsl-config#wslconfig

WSLのディストリビューションごとにメモリ制限をしたい場合は、各ディストリビューションの/etc/wsl.conf に設定を行えばよいみたいです。(未検証)

設定内容

こんな感じで.wslconfigファイルに設定を記載します。swapも使わないように設定しました。

[wsl2]
memory=60GB
swap=0

メモリ容量を減らし、CPUリソースを制限するような設定も可能です。

[wsl2]
memory=16GB
processors=4
swap=0

設定反映

Windowsを再起動すれば設定は反映されますが、WSLのシャットダウン→起動 でも反映されます。念のため、Docker Desktop を終了させてから、WSLをシャットダウンします。

>wsl --shutdown

シャットダウン後にもう一度 WSLのUbuntuのにアクセスし、メモリ容量を確認してみると、設定が反映されていることを確認できます。

~$ free
              total        used        free      shared  buff/cache   available
Mem:       61726860      107372    61550672          68       68816    61153544
Swap:             0           0           0
わし
わし

少しでも多く Docker Desktop に場合には試してみると良いかもしれません。

Amazon.co.jp: ゲームウォッチ: ゲーム
ゲーム の優れたセレクションでオンラインショッピング。

コメント