美文网首页
Docker macvlan的使用及访问主机问题解决

Docker macvlan的使用及访问主机问题解决

作者: 小李子Levy | 来源:发表于2022-01-09 21:09 被阅读0次

    前言

    我们在使用docker时,大多数情况下容器网络都是用的bridge,然后通过端口映射暴露服务。但有些场景我们想为容器添加单独的ip,这个时候macvlan网络就排上用场了。

    使用

    创建

    docker network create \
      --driver=macvlan \
      --gateway=192.168.3.1 \
      --subnet=192.168.3.0/24  \
      --ip-range=192.168.3.240/28 \
      -o parent=eth0 vnet
    

    使用命令docker network ls查看

    image.png
    后续在创建容器时通过参数--network vnet指定使用该网络即可。为了能够使用固定的ip,可以在创建容器时通过参数--ip 192.168.3.x指定容器ip,然后通过docker inspect container_name可以看到分配到了正确的ip
    image.png

    容器和宿主机访问问题

    使用上述网络的容器,虽然可以和局域网内的其他设备互相访问,但是却无法和宿主机互相访问,ping命令会返回no route to host,貌似是出于安全考虑。如果要解决这个问题,需要在物理网卡上再创建一个macvlan来实现。这里直接放脚本

    #!/bin/bash
    ip link add net-shim link eth0 type macvlan mode bridge
    ip addr add 192.168.3.239/32 dev net-shim # 这里是宿主机的virtual ip
    ip link set net-shim up
    ip route add 192.168.3.240/28 dev net-shim # 这里是上面创建docker网络时执行的ip range
    

    然后在宿主机上就可以通过容器ip直接访问,在容器中需要访问宿主机需要通过虚拟ip访问。
    建议在路由器上设置一下DHCP的范围,避免造成ip冲突。

    相关文章

      网友评论

          本文标题:Docker macvlan的使用及访问主机问题解决

          本文链接:https://www.haomeiwen.com/subject/hmjucrtx.html