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は流行らないのか。。。
ともかく、自分がハマったので他にもハマっている人がいるならば、その一助になれば幸いです。
この記事が気に入ったらサポートをしてみませんか?