作者:E4b9a6, 创建:2024-11-08, 字数:1029, 已阅:180, 最后更新:2024-11-08
在 github 上找到合适的程序,打算自己部署,但对于一些小众或者不开源的程序来说又有数据隐私泄露的问题
所以在部署这些第三方容器时,考虑限制 Docker 容器的外网访问权限,以保障数据安全
经过尝试,将网络设置为 None/Internal
都会导致无法从 Nginx 代理将请求解析到 Docker 容器中
翻阅 Docker 的文档,查找到 docker-bridge#options 部分,经实践可以通过如下2个参数来限制容器的外网访问能力:
前者禁用 NAT 伪装实现断网,后者可以设置一个过大的值如 99999 来导致请求异常
前者的稳定性大于后者,将 compose.yaml
改造如下:
services:
memos:
image: alpine:latest
container_name: memos
volumes:
- ./memos:/memos
command: ["/memos/memos", "--data=/memos/data", "--mode=prod","--addr=0.0.0.0"]
restart: unless-stopped
networks:
- private_bridge
ports:
- 127.0.0.1:8081:8081
networks:
private_bridge:
driver: bridge
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: 'false' # 禁用 NAT伪装 实现断网
com.docker.network.bridge.enable_icc: 'false' # 加强内部隔离,不允许访问其它容器
经设置后,容器将无法访问外网与其它容器,以此来保障数据安全