前言

目前项目采用微服务架构进行开发,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,可以看到已经互通
宿主机网络中其它机器与Docker容器网络互通配置

4. 总结

在完成以上操作之后,可以通过docker inspect 容器ID,可以看到在容器的网络配置中增加了macvlan10网关的配置,如下:
宿主机网络中其它机器与Docker容器网络互通配置

希望能够给大家帮助,如果还有更好的方法,还希望大家分享!
坚持写博客

以上配置之后,会出现macvlan模式容器与宿主机通信问题,可以通过如下配置进行设置
【Docker】macvlan网络模式下容器与宿主机互通
https://rehtt.com/index.php/archives/236/