前言
目前项目采用微服务架构进行开发,Nacos和其它服务部署到Docker中,Docker中容器采用的网络默认是桥接模式(Bridge),默认的子网码是172.17.0.1/16;宿主机是192.168.1.231;同宿主机其它网络也是192.168.1.39;同事提出本地机器想与Docker中容器互通,访问方式如下:
本地机器直接ping 容器IP(172.17.0.5)是访问不通的,因为处于不通的网段,在百度上查找了半天也没有找到合适的方法,自己通过摸索,采用macvlan+docker network connect进行连接。
1. docker的macvlan网络创建
在Docker 宿主机执行如下命令:
docker network create -d macvlan
--subnet=192.168.1.0/16
--gateway=192.168.1.1
-o parent=eth33 macvlan10
通过以下命令查找docker网络命令如下:
docker network ls
可以看到macvlan10已经在该列表中,说明该命令已经成功
2. 把Docker中容器加入到macvlan10网络中
docker network connect macvlan10 容器ID/名称
3. 验证
在本机执行 ping 容器IP,可以看到已经互通
4. 总结
在完成以上操作之后,可以通过docker inspect 容器ID,可以看到在容器的网络配置中增加了macvlan10网关的配置,如下:
希望能够给大家帮助,如果还有更好的方法,还希望大家分享!
坚持写博客
以上配置之后,会出现macvlan模式容器与宿主机通信问题,可以通过如下配置进行设置
【Docker】macvlan网络模式下容器与宿主机互通
https://rehtt.com/index.php/archives/236/