こんにちは、 @dz_ こと大平かづみです。
Prologue - はじめに
Docker for Windows で、ときどきこのエラーに遭遇します。Docker for Windows をリスタートすれば直るのですが、不便なので根本対処してみました。
Error response from daemon: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
エラー分析
本件は、Github の issue にも上がっていますね。
どうやら、このエラーのようです。
エラーコード | 説明 |
---|---|
WSAENOBUFS 10055
|
No buffer space available. An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full. |
対処
対処としては、TCP 接続数の上限値を引き上げねばならないようです。レジストリ書換えは億劫ですがやってしまいましょう。
なお、レジストリ書換えに失敗すると危険、ということは昔から変わらないようですので、ご自身の判断でご対応ください。
手順
- Windows メニューを開いて、入力欄に
regedit
と入力し、レジストリエディタを開きます。 - レジストリエディタの、上部のパス入力欄に、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
を入力して開きます。 - 「Edit」>「New」>「DWORD (32-bit) Value」をクリック(下図参考)して、名前に
MaxUserPort
と入力します。 -
MaxUserPort
をダブルクリックし、「Base」をDecimal
に変更し、「Value data」に 設定する値を入力し、「OK」をクリックします。(下図参考)- 規定値は
5000
、上限は65534
(10進数)です。
- 規定値は
- レジストリエディタを閉じ、マシンを再起動します。
いかがですか!ちゃんと起動しましたか!(ドキドキ
私の環境では無事にうごきました~('ω')/
Epilogue - おわりに
しばらくこのエラーを放っていたんですが、ちょっと都合が悪くなったので重い腰を上げて対応しました。これでさらなる快適コンテナライフを楽しめるはず!