IMG_9668.txt.txt
Edited: Tuesday 1 July 2025

docker容器连 接 宿 主 机 的 MySQL

Wednesday, June 3, 2020 at 10:15

docker 内 的 服 务 有 时 需 要 连 接 宿 主 机 的 MySQL,

本 文 环 境

Docker 19.03.4,build 9013bf583a
OS Debian GNU/Linux 9

宿 主 机 的 IP

垒 罪 咤 内 执 行 ip route 命 令 ,aefault via 后 面 跟 着 的 IP 就 是 宿 主 机
J IP。

root&debian: docker run –rm busybox ip route

default Via 172 .18.0.1 dev eth0
172.18.0.0/116 aqev eth0 scope Link Src 172 .18 .0 .2

可 以 看 到 , 此 容 器 的 本 机 IP 为 172.18.0.2, 宿 主 机 的 IP 是

172 .18 .0 .1。

切 月 ry 人 户 目 人 r
垒 罪 咤 内 执 行 ip route 命 令 ,aefault via 后 面 跟 着 的 IP 就 是 宿 主 机
J IP。

root&debian: docker run –rm busybox ip route
default Via 172 .18.0.1 dev eth0
172.18.0.0/16 aqev eth0 scope Link “_src 172 .18 .0.2

可 以 看 到 , 此 容 器 的 本 机 IP 为 172.18.0.2, 宿 主 机 的 IP 是
172.18 .0.1。

docker network 对 IP 的 影 响

在 宿 主 机 中 运 行 docker run –rm busybox ip _route 获 得 的 宿 主 机
IP 为 172 .18 .0 .1, 在 指 定 了 network 的 容 器 内 Ping 不 通 。 后 来 发 现
在 不 同 的 network 下 , 容 器 的 IP 段 是 不 一 样 的 , 在 这 里 复 现 一 下 。

root&debian: docker network create test 水 创 建 新 的 network
d5c1f383ee4c397112660b18087c42fe8f3e000ced2949778b4adb4925e6882d
root&debian: docker run –rm –network test busybox ip route
default Via 192 .168.192.1 dev eth0

192.168.192.0/20 aqev eth0 scope Link “_sSrc 192 .168 .192 .2

可 以 看 到 , 在 指 定 了 network 后 ,IP 段 就 从 172.18 .0.0/16 变 成 了
192 .168 .192.0/20。

宿 主 机 的 防 火 墙

在 能 ping 通 宿 主 机 的 前 提 下 , 尝 试 通 过 mysql -h 192.168.192.1 -u
root -p 命 令 登 录 宿 主 机 的 MySQL, 结 果 Timeout 了 。

但 是 在 容 器 内 执 行 carl 192.168.192.1 是 有 response 的 , 证 明 是 宿
主 机 的 3306 端 口 没 有 放 开 , 放 开 3306 端 口 即 可 。

一 般 云 服 务 器 厂 商 自 身 还 有 一 个 防 火 墙 , 只 要 云 服 务 器 控 制 面 板 里
的 防 火 墙 不 放 开 3306 端 口 的 话 , 外 界 依 然 访 问 不 了 服 务 器 的 3306
端 口 , 所 以 可 以 大 胆 在 服 务 器 内 放 开 3306 端 口 , 不 必 担 心 安 全 问
题 。

MySQL 的 白 名 单

解 决 了 防 火 墙 的 问 题 之 后 , 在 容 器 内 再 次 尝 试 通 过 mysql -h
192.168.192.1 -u Koot -P 连 接 宿 主 机 的 MySQL, 收 到 了 来 自
MySQL 的 报 错 Host,“192.168.192.2,is not allowed to connect
to this MySeL server, 直 接 在 MySQL 中 将 192.168 .192.2 加 入 白
名 单 即 可 。

如 果 是 多 个 容 器 都 需 要 连 接 宿 主 机 的 MySQL 的 话 , 可 以 参 考 MySQL
IP 白 名 单 使 用 通 配 符 将 B 类 子 网 192.168.0.0 全 都 加 入 白 名 单 , 这 样
一 来 就 一 劳 永 逸 了 。

Backlinks