docker中给容器指定ip地址

本文详细介绍如何使用Docker创建自定义网络,包括macvlan类型的网络配置,并为容器分配特定的IP地址。通过实例演示,读者可以学习到如何利用docker network create和docker run命令行进行精确的网络设置。
新建网络
docker network create -d macvlan --subnet=192.168.153.0/24 --gateway=192.168.153.1 -o parent=ens33 mynet

给容器指定网络和ip
docker run --rm --net mynet --name n1 --ip 192.168.153.100 -d nginx
docker run --rm --net mynet --name n2 --ip 192.168.153.101 -d nginx

其中-d macvlan为指定网络类型,-o parent=ens33为指定继承的网卡参数,--net mynet为网络名

使用 Docker容器分配指定网段可以通过创建自定义网桥或使用特定网络模式来实现。 ### 创建自定义网桥 Docker 默认的 docker0 网段通常是固定的(172.17.0.0/16),为更灵活管理容器网络,可创建自定义网桥并指定网段。例如,创建一个网段为 192.168.5.0/24 的自定义网桥: ```bash docker network create --subnet=192.168.5.0/24 my_custom_bridge ``` 之后,在启动容器指定该网桥,让容器使用该网段的 IP 地址: ```bash docker run -it --network=my_custom_bridge busybox ``` ### 使用 ipvlan 网络模式 还可以使用 ipvlan 网络模式为容器分配指定网段的 IP 地址。以创建一个网段为 192.168.9.0/24 的网络为例: ```bash docker network create -d ipvlan --subnet=192.168.9.0/24 --gateway=192.168.9.253 -o ipvlan_mode=l2 -o parent=enp5s0f2 k8sNodeNet ``` 启动容器指定网络,可自动分配 IP,也可使用 `--ip` 参数指定 IP: ```bash docker run --privileged -it --name centos7ssh --net k8sNodeNet -d centos7ssh /usr/sbin/init # 指定 IP docker run --privileged -it --name centos7ssh --net k8sNodeNet --ip 192.168.9.x -d centos7ssh /usr/sbin/init ``` ### 手动配置网络 使用 `--net=none` 参数启动容器后,Docker 不对容器进行网络配置,若需要容器网络可用,需手动配置。过程如下: 1. 创建一对虚拟接口,分别放到本地主机和新容器中。 2. 本地主机一端桥接到默认的 docker0 或指定网桥上,并具有一个唯一的名字,如 veth65f9。 3. 容器一端放到新容器中,并修改名字作为 eth0,这个接口只在容器的名字空间可见。 4. 从网桥可用地址段中获取一个空闲地址分配给容器的 eth0,并配置默认路由到桥接网卡 veth65f9 [^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值