Docker UFW подключиться к хост-машине - PullRequest
0 голосов
/ 08 июня 2018

Я опробовал Docker с UFW, и я много читал об этом.

Моя цель состояла в том, чтобы подключиться к базе данных mariadb на хост-компьютере из образа докера.

Host (running ufw) -> docker container 1 - mediawiki -> Database (onHost)
                   -> docker container 2 - phpwebserver -> Database (onHost)
                   -> docker container 3 - nextcloud -> Database (onHost)
                   -> .......

I

По умолчанию докер использует iptables, который можно отключить.

/etc/docker/daemon.json 
{
  "iptables": false
}

затем установите

/etc/default/ufw
DEFAULT_FORWARD_POLICY to ACCEPT

наконец добавьте эти строки в файл after.rules

/etc/ufw/after.rules

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE
COMMIT

Назад в Docker: Теперь я добавляю localhost: портотображение и хост базы данных в файле docker-compose.yml

ports:
  - "127.0.0.1:8080:8080"
MEDIAWIKI_DB_HOST: 172.17.0.1 <- this was the docker0 interface

Я вижу с помощью Docker PS, что Docker работает как localhost:

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                NAMES
cffb491c84b2        db_mediawiki   "/docker-entrypoint.…"   22     minutes ago      Up 22 minutes       127.0.0.1:8080->8080/tcp, 9000/tcp     mediawiki_wiki

Теперь я могу подключиться с помощью обратногоnginx в хост-системе к этому образу докера.Или просто с помощью curl localhost: 8080 / wiki / Main_Page

Без UFW все кажется работающим, но с включенным UFW все соединения заблокированы от моста до интерфейса docker0?

[UFW BLOCK] IN=br-9da71acf3f9f OUT= MAC=02:42:f2:7b:35:7b:02:42:ac:12:00:02:08:00 SRC=172.18.0.2 DST=172.17.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=53146 DF PROTO=TCP SPT=36126 DPT=3306 WINDOW=29200 RES=0x00 SYN URGP=0

Может кто-нибудь предоставитькакая-нибудь помощь, чтобы заставить этот шаг работать?

Большое спасибо,

Дэвид

1 Ответ

0 голосов
/ 29 марта 2019

Вам не нужно изменять /etc/ufw/after.rules.

Просто добавьте это правило в ufw sudo ufw allow in on docker0 from 172.17.0.0/16 to 172.17.0.0/16, оно разрешит все пакеты на интерфейсе docker0 с сетью 172.17.0.0.

...