跳到主要内容

Docker 穿透防火墙的问题

· 阅读需 2 分钟

前言

有些服务只需要在本地访问,不需要向外暴露端口,不然会有安全隐患,总有一大堆机器扫描你的端口,尝试接入你的服务。

通过 Docker 暴露的端口,即使没有在防火墙中手动放行,在外部还是可以访问到。

解决办法

在进行端口映射的时候指定监听地址为127.0.0.1,如127.0.0.1:3000:80。在没指定的情况下,如3000:80,监听地址为0.0.0.0

这在使用docker run命令和docker-compose命令的时候都可以生效。

docker run命令示例如下。

docker run -p 127.0.0.1:80:80 nginx

使用docker-compose命令时,docker-compose.yml内容示例如下。

version: '3.3'
services:
nginx:
ports:
- '127.0.0.1:80:80'
image: nginx

参考资料