Назад | Перейти на главную страницу

Не могу закрыть порт при использовании 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

В конфигурации nginx сервера Ubuntu у меня есть:

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, он кажется открытым. Как я могу закрыть этот порт?

Если вы не хотите, чтобы докер-контейнер открывал порт, тогда не публиковать этот порт в первую очередь.
Просто удалите порт из конфигурации вашего контейнера.

Просто удалите это отображение:

ports:
  - "8083:5000"

(Задний план: докер создает правила брандмауэра это на хосте откроет порты, которые вы публикуете, чтобы сделать контейнер доступным для всего мира. Эти правила имеют приоритет над ufw deny команда. https://docs.docker.com/config/containers/container-networking/)