Docker容器内连接宿主机的其他服务,比如Mysql
Posted 悟能的师兄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器内连接宿主机的其他服务,比如Mysql相关的知识,希望对你有一定的参考价值。
通过上一篇文章,我们可以解决同一个容器内的通讯问题,大家使用同一个桥接网络的方案是最简便的,但是我们的容器需要访问宿主机怎么办 ?
现实的场景,我们一般都是微服务全部部署到了容器内,但是像数据库这种极其需要稳定性的功能,我们是需要部署到宿主机上面的,别问我为什么不买云数据库,问就是穷。其实要解决这个问题很简单,只需要我们指导桥接网络的原理。桥接网络相当于是宿主机当成的交换机主机,然后新创建的了一个网段,而宿主机就是这个网段的分配者叫做网关,懂网络的朋友都知道了,我们的路由器或者交换机的IP一般是这个IP的 【***.***.***.1】,这时就很简单了,我们的宿主机就是当前桥接网络的【***.***.***.1】。
1、查看我当前的桥接网络
[zcsjw_use@iZ8vb3lp570ckrtrhp6f42Z docker]$ docker network ls
NETWORK ID NAME DRIVER SCOPE
965f410854ce bridge bridge local
afdb8db9805c docker_default bridge local
8a85f0b982ae docker_work3 bridge local
ca1da99cf73f host host local
9acaf4ecacea none null local
654c85f7c6c8 product_default bridge local
2、查看的桥接网络的网段
[zcsjw_use@iZ8vb3lp570ckrtrhp6f42Z docker]$
[zcsjw_use@iZ8vb3lp570ckrtrhp6f42Z docker]$ docker inspect docker_work3
[
"Name": "docker_work3",
"Id": "8a85f0b982aed1943756795a6023f599d05b4f071426e6ebf33d37ad7db26b02",
"Created": "2022-10-08T10:01:16.627697693+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM":
"Driver": "default",
"Options": ,
"Config": [
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
]
,
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom":
"Network": ""
,
"ConfigOnly": false,
"Containers":
"4c76545ed4d82ec1f848935e3d8293d838dc8b2f2bbba5d758b6cdbe201cf774":
"Name": "prod-nacos",
"EndpointID": "bb7df3f003327aca8bfd0e19d8e8627e41e0b5cbe3eb2ca70d63ccbdba925685",
"MacAddress": "02:42:ac:12:00:08",
...................................
...................................
...................................
...................................
...................................
...................................
后面还有十几个服务就不放出来了
3、获得宿主机的IP后做自己的业务
"Gateway": "172.18.0.1"
收工,祝大家天天能学习到新的知识!!
以上是关于Docker容器内连接宿主机的其他服务,比如Mysql的主要内容,如果未能解决你的问题,请参考以下文章