Mac中在Docker容器中访问宿主中的mysql

19 篇文章 1 订阅
10 篇文章 0 订阅

Docker For Mac 没有 docker0 网桥

在使用 Docker 时,要注意平台之间实现的差异性,如 Docker For Mac 的实现和标准 Docker 规范有区别,Docker For Mac 的 Docker Daemon 是运行于虚拟机 (xhyve) 中的,而不是像 Linux 上那样作为进程运行于宿主机,因此 Docker For Mac 没有 docker0 网桥,不能实现 host 网络模式,host 模式会使 Container 复用 Daemon 的网络栈 (在 xhyve 虚拟机中),而不是与 Host 主机网络栈,这样虽然其它容器仍然可通过 xhyve 网络栈进行交互,但却不是用的 Host 上的端口 (在 Host 上无法访问)。bridge 网络模式 -p 参数不受此影响,它能正常打开 Host 上的端口并映射到 Container 的对应 Port。文档在这一点上并没有充分说明,容易踩坑。

docker 18.03 加入了一个 feature,在容器中可以通过 host.docker.internal 来访问主机
Use your internal IP address or connect to the special DNS name host.docker.internal which will resolve to the internal IP address used by the host.

linux

有时候就需要在 docker 容器里访问宿主机提供的服务。
例如容器里的应用需要访问宿主机的 mysql 服务。

方案一:
宿主机执行 ifconfig
会看到 docker0 那个 ip,可以使用来访问宿主机

方案二:
docker 18.03 加入了一个 feature,在容器中可以通过 host.docker.internal来访问主机
Use your internal IP address or connect to the special DNS name host.docker.internal which will resolve to the internal IP address used by the host.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值