docker开启macvlan及其宿主机访问

Linux2年前 (2023)发布 ENE
1,177 0 0

docker开启macvlan及其宿主机访问

本文参考Rehtt's Blogmoby周杰个人博客

简介

dockermacvlan模式是为了让容器拥有独立的ip地址,可以用于节约宿主机有限的端口和需要host容器多开。但一旦开启macvlandocker宿主机不能访问容器容器也不能访问宿主机,这是docker为了保护宿主机的机制,所以在这里顺便放上能让容器宿主机互访的方法。本文章主要采用网心云macvlan方法


开启macvlan及容器使用macvlan

开启macvlan

  1. 开启网卡混合模式

    sudo ifconfig ovs_eth0 promisc

    群晖记得在控制面板->网络->网络界面->管理里打开open vswitch

  2. 创建macvlan

    docker network create -d macvlan   --subnet=192.168.1.0/24 ##网段指定 --gateway=192.168.1.254 ##路由指定 -o parent=ovs_eth0 ##macvlan使用的网卡 bridge-host ##macvlan名称

    支持ipv6命令

    docker network create -d macvlan --subnet=192.168.99.0/24 #ipv4网段 --gateway=192.168.99.254 #ipv4路由 --ipv6 --subnet=fe80::f66d:4ff:fe69:5a2c/64 #ipv6网段 --gateway=fe80::f298:38ff:fe5d:7aa4 #ipv6路由 -o parent=ovs_eth0 #网卡 bridge-host #名称

    容器使用macvlan

    docker run -itd --name=wxedge #容器名 --net=bridge-host #macvlan名称 --ip=192.168.1.100 #ip地址,貌似可以不指定,用dhcpcd --privileged=true --tmpfs /run --tmpfs /tmp -v /media/wxedge_storage:/storage:rw --restart=always #重新启动 onething1/wxedge #镜像名

    查看容器信息

    sudo docker inspect jackett#jackett是容器名字

    查看所有在运行的容器信息

    docker ps

宿主机容器互访

  1. 添加macvlan
    ip link add macvlan2 #macvlan名称 link eth0 #网卡 type macvlan mode bridge
  2. macvlan添加地址
    ip addr add 192.168.1.15 #ip地址 dev macvlan2 #macvlan名称
  3. 启动macvlan
    ip link set macvlan2 #macvlan名称 up
  4. 设置宿主机访问容器的数据走macvlan
    ip route add 192.168.1.20 #容器ip地址 dev macvlan2 #macvlan名称
© 版权声明

相关文章