我有一台 Ubuntu 16.04 服务器,上面有一个使用 Docker 运行的应用程序:
web: &django
restart: always
environment:
- DJANGO_SECRET_KEY=local
image: web
build:
context: .
dockerfile: ./compose/production/web/Dockerfile
command: /gunicorn.sh
volumes:
- /static:/static
- /media:/media
depends_on:
- postgres
- redis
links:
- redis
ports:
- "8083:5000"
env_file: .env
在 Ubuntu 服务器 nginx 配置中我有:
proxy_pass http://0.0.0.0:8083;
但是当我使用扫描服务器时nmap我看到该端口8083
是开放的:
PORT STATE SERVICE
80/tcp open http
443/tcp open https
8083/tcp open us-srv
即使我关闭它:
ufw deny 8083
ufw deny 8083/tcp
再次使用 nmap 扫描,发现端口似乎打开了。我该如何关闭这个端口?
答案1
如果你不想让docker容器打开端口,那么不要发布该端口首先。
只需从容器配置中删除端口即可。
只需删除该映射:
ports:
- "8083:5000"
(背景:docker 创建防火墙规则主机上的命令将打开您发布的端口,使容器可供全世界访问。这些规则优先于该ufw deny
命令。https://docs.docker.com/config/containers/container-networking/)