gpt4 book ai didi

mysql - Docker ufw 连接到主机

转载 作者:行者123 更新时间:2023-11-30 21:42:56 30 4
gpt4 key购买 nike

我在 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 文件中添加本地主机:端口映射和数据库主机

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

我看到 docker ps,docker 作为本地主机运行:

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 接口(interface)?

[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 允许在 docker0 上从 172.17.0.0/16 到 172.17.0.0/16

这将允许 docker0 接口(interface)上的所有数据包与 172.17.0.0 网络。

关于mysql - Docker ufw 连接到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768002/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com