WindowsのDocker Desktopを起動時に、Docker is startignの後に、次のようなエラーが発生したときの原因と対処法について。
↓
エラーの原因
エラーの原因は、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 |
TLS | 〇 | Transport Layer Security |
旧来のクライアントがアクセスできるようにします。注釈にもありますが、暗号化していないので、リモートでコード実行攻撃が発生するリスクがあります。
対処法
対処法は状況に応じて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
以上で完了です。