使用 Docker 时无法关闭端口

使用 Docker 时无法关闭端口

我有一台 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/

相关内容