【Docker】エラー対処法:Unable to expose Docker API on 127.0.0.1:2375,[::1]:2375 on Windows 10. The port is already in use by another program.

docker-prograshi(プロぐらし)-kv Docker
記事内に広告が含まれていることがあります。

WindowsのDocker Desktopを起動時に、Docker is startignの後に、次のようなエラーが発生したときの原因と対処法について。

 ↓

Docker Desktop Unable to expose Docker API on 127.0.0.1:2375,[::1]:2375 on Windows 10. The port is already in use by another program.
エラー

Docker Desktop
Unable to expose Docker API on 127.0.0.1:2375,[::1]:2375 on Windows 10. The port is already in use by another program.

Docker APIが127.0.0.1:2375,[::1]:2375に接続することができません。このポートは既に他のプログラムで使用されています。


エラーの原因

エラーの原因は、Docker Desktopの設定で「Expose daemon on tcp://localhost:2375 without TLS”」のチェックが入っているためです。

Dockerがlocalhost:2375ポートにアクセスしようとしていますが、そのポートが既に使用中で使えない場合に発生します。

Expose daemon on tcp://localhost:2375 without TLSとは?

そもそも、 Expose daemon on tcp://localhost:2375 without TLS とは何かというと、暗号化しない通信でDockerへの接続をできるようにする(Dockerを公開する)ことです。

TLSとは暗号化した通信のことで、一般的にはSSLを指します。一方、TCPは暗号化していないプロトコルです。

名称暗号化正式名称
TCP×Transmission Control Protocol
TLSTransport Layer Security

旧来のクライアントがアクセスできるようにします。注釈にもありますが、暗号化していないので、リモートでコード実行攻撃が発生するリスクがあります。


対処法

対処法は状況に応じて2つあります。

  1. 警告ありの状態で問題なく使えている場合
  2. 警告ありの状態で問題が発生していた場合

警告ありの状態で問題なく使えている場合

もし、Unable to expose Docker API on 127.0.0.1:2375,[::1]:2375の警告が出ていても、Dockerが問題なく使える状態であれば、暗号化なしのTCPで接続する必要性はありません。

なので、「Expose daemon on tcp://localhost:2375 without TLS”」のチェックマークを外して再起動すれば、警告は出なくなります。


警告ありの状態で問題が発生していた場合

TCPでも接続する必要がある場合は、 127.0.0.1:2375 (localhost:2375)のポートをDocker for Desktop用に空けて、予約します。手順は次のとおりです。

Hyper-Vを無効にする

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

2375ポートを予約する

netsh int ipv4 add excludedportrange protocol=tcp startport=2375 numberofports=1

Hyper-Vを有効にして再起動する

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

以上で完了です。

(参考)Docker for-win Port 2375 not listening

タイトルとURLをコピーしました