はじめに
グローバルIPを持つVPSから-p 80:80
のようにしてdocker run
したら、
グローバルIPの80番ポートにアクセスできてしまった。
ufwを使って80番ポートを閉じているにも関わらず、です。
原因
Dockerが全ホストからアクセスできるようにファイアーウォールを上書きしてしまうため。
対処方法
-p 127.0.0.1:8080:80
のようにして、localhostにバインドすれば、
外部には公開されないようになります。
以下、公式からの注意喚起です。知らなかった…。
Important Publishing container ports is insecure by default. Meaning, when you publish a container’s ports it becomes available not only to the Docker host, but to the outside world as well. If you include the localhost IP address (127.0.0.1) with the publish flag, only the Docker host can access the published container port.
さいごに
公式ドキュメントはちゃんと読みましょう!(自戒)