コメント_2019-09-07_234833

Docker for Windows で外部PCからコンテナにアクセスするために

ポートを開けましょう。


社内でいろいろなwebアプリを試しています。
タスク管理アプリだったり、お絵かきアプリだったり、wikiアプリだったり。

その際、流石にそれぞれのアプリケーションに対応したサーバ環境を逐一構築していては大変なので、Docker for Windows (Windows PCしか無いため) で色々コンテナを試しては削除してを繰り返しています。

で、良さそうなものを見つけると、メンバに紹介することになるのですが、外部PCからは全然見ることができませんでした。コンテナのあるPCからlocalhostとしてアクセスする分には見えるのですが。。。

色々ググりましたがドンピシャの記事などはなく、断片的な情報から推測のもと試行錯誤し、ひとまず"works for me"の手順が得られましたので、noteとして残します。

解決したかった事象

解決したかった事象は、以下のとおりです。

・Windows10 Pro 使っています
・Docker for Windowsでwebアプリのコンテナをrun (nginxサンプルとか)
・ポートは32768:80指定のため、localhost:32768でアクセス可能
・ただし、外部PCから<PCアドレス>:32768 で出来なかったので、アクセスしたい

手順

手順という程のものではありませんが…結論としてはWindowsの Firewall の設定で、アクセスしたいポートでの接続を許可する、になります。

まず、Windows の Firewall 設定に行きましょう。
「Windows」キーを押下し、「ファイアウォール」と入力すると出てくる候補の中で、「セキュリティが強化されたWindows Defender ファイアウォール」をクリックします。出てこなければ「セキュリティが強化された」のほうが確実かもしれません。

出てきた画面で、左側のツリービューでは「受信の規則」を選択し、右側の「操作」で「新しい規則」をクリックします。

規則の種類は、ポートになります。

適用したいポートは、今回は 32768 になります。

適用したい動作は、接続の許可です。

適用する時期は、今回はパブリック以外としています。

規則の名前は、適当につけています。

これで 32768 のポートは空いたはずです。


外部のPC(今回はスマホでやっています)からコンテナのあるPCのアドレスにアクセスすると、接続出来きるようになっていました。今回は "hello-world-nginx" コンテナで試行していました。

まとめ

Docker for Windows を使っていて、外部PCからコンテナにアクセス出来なかったのですが、ファイアウォール設定することでアクセス出来るようになりました。

と言うか、今回ググった限りでは「ポートを開けろ」と書いている記事は見当たらなく、「ポートフォワーディングしろ」と書いているところが数箇所見つかったのみです。みんなは普通に接続出来るのか、もしくは常識過ぎて誰も書かないのか、そもそもWindowsでDockerは流行らないのか。。。

ともかく、自分がハマったので他にもハマっている人がいるならば、その一助になれば幸いです。


この記事が気に入ったらサポートをしてみませんか?