Docker for Windowsでホストとコンテナのボリューム共有するときに必要なESETの設定


ESETの初期設定だとボリューム共有に失敗してコンテナが起動しない

ESETをインストールしているPCでDocker for Windowsを動かしている環境のお話です。
上記のような環境で、docker-compose.ymlにボリューム共有設定を書いて、docker-compose upでコンテナを起動しようとすると、ファイアウォールでブロックされたよとエラーログが出力される。

PS C:\Users\hkr\Desktop\docker-test> docker-compose up
Creating master ... error

ERROR: for master  Cannot create container for service master: b'Drive sharing seems blocked by a firewall'

ERROR: for master  Cannot create container for service master: b'Drive sharing seems blocked by a firewall'
ERROR: Encountered errors while bringing up the project.

ESETのファイアウォールに445番ポート宛の通信許可ルールを追加すればOK

ESETのファイウォールログを見ると445番ポート宛の通信がブロックされていた。
Dockerの公式サイトでも445番ポートと解放しろと記載あり。

ESETのファイアウォールに許可ルールを追加

ESETのホーム画面の「設定」をクリック

右下の「詳細設定」をクリック

「ファイアウォール」>「詳細」>ルールの「編集」をクリック

「追加」をクリック

各タブに以下を設定

項目 設定値
名前 Docker Shared Drives用(445解放)
有効 有効を選択
方向 内向き
アクション 許可
プロトコル TCP
プロファイル 任意のプロファイル

項目 設定値
ポート 445
IP 未指定
ゾーン ローカルアドレス
アプリケーション 未指定
サービス 未指定

項目 設定値
ポート 未指定
IP 未指定
ゾーン 未指定

「すべてのルール(定義済み)」にチェックを入れる
(ここのチェックの存在にしばらく気付かずハマった。。。)

デフォルトで設定されているルールが表示されるので、さきほど追加したルールを選択し一番上に移動させる。

「OK」クリック

改めてコンテナを起動

ボリューム共有も起動もOK。

PS C:\Users\hkr\Desktop\docker-test> docker-compose up
Pulling master (jenkinsci/jenkins:2.142-slim)...
2.142-slim: Pulling from jenkinsci/jenkins
802b00ed6f79: Pull complete
c93b65a61a80: Pull complete
a9885ada077a: Pull complete
a89352ec9377: Pull complete
796c914eaedf: Pull complete
69436e8df502: Pull complete

~以下略~

(余談)以下はESETのログ出力設定の変更方法

ESETのブロックログを確認する際、ログの出力設定を変更する必要があったので忘れないようにメモ。

ESETのログ出力設定を変更

デフォルトではファイアウォールのブロックログは記録されないようなので、ログの出力設定を変更する。

ESETのホーム画面を開いて「設定」をクリック

右下の「詳細設定」をクリック

「ツール」>「ログファイル」>「診断」を選択 (細かくログがでるのが「診断」)

ブロックログが出力されるようになっていることを確認

ESETのホーム画面の「ツール」をクリック

右下の「その他のツール」をクリック

「ログファイル」をクリック

「ネットワーク保護」をクリック

ブロックされているログから、445宛の通信がブロックされていることを確認