繁体   English   中英

Docker UFW连接到主机

[英]Docker ufw connect to host machine

我用UFW尝试了Docker,我读了很多。

我的目标是从Docker映像连接到主机上的mariadb数据库。

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

一世

默认情况下,docker使用可禁用的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:现在我在docker-compose.yml文件中添加localhost:port映射和数据库主机

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连接到此Docker映像。 或者只是使用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

任何人都可以提供一些帮助来使此步骤起作用吗?

非常感谢,

大卫

您不需要更改/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网络的所有数据包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM