@Muramidaza

Почему не видны снаружи порты докера в Ubuntu?

Я запускаю контейнеры докера с помощью docker-compose, контейнеры запускаются успешно. Docker-compose ps дает

db_1       docker-entrypoint.sh postgres    Up (healthy)   0.0.0.0:2054->5432/tcp,:::2054->5432/tcp
db_2     docker-entrypoint.sh postgres    Up (healthy)   0.0.0.0:2154->5432/tcp,:::2154->5432/tcp
nginx_1        /docker-entrypoint.sh ngin ...   Up             0.0.0.0:443->443/tcp,:::443->443/tcp, 0.0.0.0:2081->80/tcp,:::2081->80/tcp, 0.0.0.0:2181->8080/tcp,:::2181->8080/tcp
php_1          docker-php-entrypoint php-fpm    Up             0.0.0.0:9903->9000/tcp,:::9903->9000/tcp
supervisor_1   docker-php-entrypoint /usr ...   Up             0.0.0.0:2347->2346/tcp,:::2347->2346/tcp, 9000/tcp


sudo iptables -L

ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere


Порты докера доступны на машине с убунту - telnet 192.168.1.35 2081 -подключается

Но не видны с другой машины. В чем может быть дело?
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
@Muramidaza Автор вопроса
apparmor блокировал внешние соединения
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Viji
@Viji
DevOps Engineer
Пример из моего compose - использую 2 сети для внутр и наружных подключений

version: '3.8'

services:
  frontend:
    image: xxxxxxx/frontend:latest
    restart: unless-stopped
    pull_policy: always
    container_name: react-frontend      
    ports:
      - "80:8008" # Expose the frontend on port 80 of the host - for outside communication
    depends_on:
      - app      
    networks:
      - appnetwork  # Connect frontend to the internal appnetwork
    environment:
      - REACT_APP_API_SERVER=backender      ## http://app:8080
      - REMOTE_SERVER=http://app:8080

  app:
    image: 'ZZZZZ/backend:latest'
    restart: unless-stopped
    pull_policy: always
    container_name: app
    ports:
      - '8080' # accessible on appnetwork only
    depends_on:
      - postgres
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/postgres
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=fdsgdsfgdsfgdshfsdfjg
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update
      - TOMCAT_PORT=8080
    networks:
      - appnetwork  # Use appnetwork for backend communications


если порт по прежнему не виден, установи себе на ufw и регулируй доступ к портам из него. Imho легче
Ответ написан
Комментировать
@Drno
sudo ufw disable
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы