docker开启macvlan及其宿主机访问
本文参考Rehtt's Blog、moby、周杰个人博客
简介
docker
的macvlan
模式是为了让容器拥有独立的ip
地址,可以用于节约宿主机
有限的端口
和需要host
的容器
多开。但一旦开启macvlan
,docker宿主机
不能访问容器
,容器
也不能访问宿主机
,这是docker
为了保护宿主机
的机制,所以在这里顺便放上能让容器宿主机
互访的方法。本文章主要采用网心云macvlan
方法
开启macvlan及容器使用macvlan
开启macvlan
-
开启网卡混合模式
sudo ifconfig ovs_eth0 promisc
群晖记得在控制面板->网络->网络界面->管理里打开
open vswitch
-
创建
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
宿主机容器互访
- 添加
macvlan
ip link add macvlan2 #macvlan名称 link eth0 #网卡 type macvlan mode bridge
macvlan
添加地址ip addr add 192.168.1.15 #ip地址 dev macvlan2 #macvlan名称
- 启动
macvlan
ip link set macvlan2 #macvlan名称 up
- 设置宿主机访问容器的数据走
macvlan
ip route add 192.168.1.20 #容器ip地址 dev macvlan2 #macvlan名称
© 版权声明
文章版权归作者所有,未经允许请勿转载。
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!