docker 容器指定主机网段。
直接连接到物理网络:使用macvlan技术可以让Docker容器直接连接到物理网络,而不需要通过NAT或端口映射的方式来访问它们。可以提高网络性能和稳定性,同时也可以使容器更加透明和易于管理。
1、首先需要查询网卡的名字:使用ifconfig命令查看网卡名:
用户名@主机名:~$ ifconfig
[网卡名]:inet [主机IP] netmask [子网掩码] broadcast [网关地址]
2、创建网络并绑定物理网卡
网络模式 macvlan
macvlan 可以将虚拟网卡跟主机共用同一网段。
docker network create -d macvlan --subnet=172.168.1.0/24 --gateway=172.168.1.1 -o parent=eth0 网络名称
-o parent=eth0 将虚拟网络绑定网卡
docker network create -d macvlan --subnet=[网段] --gateway=[网关] -o parent=[网卡] macvlan
例如,我查询到的网卡名是eth0,网关是192.168.1.1,这样我可以创建一个名字叫new_macvlan01的macvlan网络如下:
docker network create -d macvlan --subnet=192.168.1.1/24 --gateway=192.168.1.1 -o parent=eth0 new_macvlan01
3、容器一个固定IP,可以使用如下命令创建一个容器,并给它一个固定IP:
docker run -it --name [容器名] --net macvlan --ip=[固定IP] [镜像名] /bin/bash
例如,我想以centos镜像创建一个名字叫test的容器,并给它一个IP为192.168.1.10
docker run -it --name test --net macvlan --ip=192.168.1.10 centos /bin/bash
其他命令
4.解除容器绑定的网络
docker network disconnect 网络名称 容器名称
5.为容器重新指定网络
docker network connect 网络名称 容器名称
6、为容器重新指定网络和ip
docker network connect 网络名称 容器名称 --ip 192.168.252.10