Docker [Compose] неправильно настраивает Iptables

Я пытаюсь настроить этот проект: https://github.com/ao-data/albiondata-докер

Но мой сервер не позволяет мне подключаться к каким-либо хостам из моего браузера.

Это урезанный Docker-Compose:

version: "3"
services:
  sql:
    depends_on: 
      - mysql
      - nats
    networks: 
      - albiondata
  api:
    ports:
      - 8056:80
    depends_on: 
      - mysql
    networks: 
      - albiondata
  gate:
    ports:
      - 4223:4223
    depends_on: 
      - nats
      - redis
    networks: 
      - albiondata
  deduper:
    depends_on: 
      - nats
      - redis
    networks: 
      - albiondata
  nats:
    ports:
      - 4222:4222
      - 6222:6222
      - 8222:8222
    networks: 
      - albiondata
  mysql:
    ports:
      - 3306:3306
    networks: 
      - albiondata
  mysql-backup:
    depends_on: 
      - mysql
    networks: 
    - albiondata
  redis:
    ports:
      - 6379:6379
    networks: 
      - albiondata
  proxy:
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    networks: 
      - albiondata
  nginx:
    ports:
      - "80:80"
      - "443:443"
      - "81:81"
    networks: 
      - albiondata
  nginx:
    ports:
      - 8080:80        
networks:
  albiondata:

Я использую ufw для настройки iptables, а также включил переадресацию, описанную здесь https://docs.docker.com/network/bridge/, с помощью команд

sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

Я проверил свои порты с помощью netstat (да, они открыты для 0.0.0.0), и все контейнеры работают без ошибок. Я также разрешил все порты, указанные в docker-compose, специально для ufw.

Но я не могу подключиться к порту 8080 или 4223, API, привязанное к порту 8056, также недоступно. Отключение iptables (удаление всех правил) исправляет это, и я могу получить доступ ко всем службам.

Мой сервер работает на Debian 11


17
1

Ответ:

Решено

Когда вы работаете с ufw и вносите изменения в брандмауэр, вы должны перезапустить демон docker.

И демон docker, и ufw работают с iptable в фоновом режиме. Когда вы вносите какие-либо изменения в ufw, они конфликтуют с демоном docker.

Перезапустите его с помощью: docker перезапустить докер