Docker容器在启动的时候默认是会有一块网卡的,但是在很多场景下,容器仅仅有一块网卡是不够的,而且,我们对于docker网卡的地址也有一些要求,那么这个时候就需要我们对容器进行添加网卡,并配置IP地址。

【Docker有关于网络配置的命令】

docker network create             #创建一个网络将容器连接到网络
docker network connect            #将容器连接到网络
docker network disconnect         #断开容器的网络
docker network inspect            #显示一个或多个网络的详细信息
docker network ls                 #列出网络
docker network prune              #删除所有未使用的网络
docker network rm                 #删除一个或多个网络

【解决方案】

1、新建docker虚拟网卡

#新建默认IP地址段的网络
docker network create --driver bridge <网卡名称>
e.g:docker network create --driver bridge mynet1
#新建自定义IP段的网络
docker network create --driver bridge --subnet <IP段> --gateway <网关> <网卡名称>
e.g:docker network create --driver bridge --subnet 192.168.100.0/24 --gatway 192.168.100.1 mynet2

2、为容器添加网卡

#创建容器时添加
docker run -itd -p 80:80 --network mynet1 php:5.6.36-apache   #随机分配IP地址
docker run -itd -p 80:80 --network mynet2 --ip 192.168.100.8 php:5.6.36-apache    #指定IP地址
#容器已经创建,追加一块网卡
docker network connect mynet2 <容器id>
e.g:docker network connect mynet2 2b6c292e0420

那么通过上面的命令进行操作,我们便可以进行自定义网卡,并且为docker容器进行网络及网络IP地址的配置。

命令详细参数,请参见: docker network命令详解

使用端口映射(NAT)的方式存在一个弊端,当多个 容器 都需要使用某个端口时或者host主机端口与 容器 端口冲突时(例如,host主机搭建了80的服务,两个 容器 也都搭建了80的服务,那个只有1个服务可以使用本机的80端口,其他服务都要映射为其他端口) 为 容器 配置 独立的桥接IP就完美的解决了这个问题。以下为 配置 步骤: 1、可以查看默认的 docker 0 网卡 的IP: 可以看到,是一个虚拟的IP地址172.17.42.1。 接下来开始 配置 ,首先停止 docker 服务: /etc/init.d/ docker stop 接着停止 docker 0 网卡 : ifconfig docker 0 down ③virbr0: 在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动 网卡 时会发现有一个以网桥连接的私网地址的virbr0 网卡 (virbr0 网卡 :它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚机 网卡 提供 NAT访问外网的功能。 我们之前学习Linux安装,勾选安装系统的时候附带了libvirt服务才会生成的一个东西
需要 容器 镜像busybox 作者的 容器 使用的是国内加速源daocloud 所以,镜像名称为daocloud.io/library/registry:2.6.1 根据先前的私有仓库得知,daocloud.io/library/registry:2.6.1是共有仓库 # 先创建两个虚拟 网卡 docker network create --driver br... 我们在使用 docker run创建 Docker 容器 时,可以用--net选项指定 容器 的网络模式, Docker 有以下4种网络模式: host模式,使用--net=host指定。 container模式,使用--net=container:NAME_or_ID指定。 none模式,使用--net=none指定。 bridge模式,使用--net=... ip link add br0 type bridge  #对应的删除命令ip link delete br0 2. 添加 网卡 eth0至网桥br0(需要清除eth0原有ip地址),亦可不添加物理网口,根据自己需要 ip link set eth0 master br0  #对应的删除命令ip link set eth0 nomaster 3. 启动 容器
要获取 Docker 容器 的网络地址,可以使用 docker -compose工具来操作。 docker -compose是一个用于定义和运行多 容器 Docker 应用程序的工具,它通过一个YAML文件来 配置 应用程序的服务。 要获取 容器 的网络地址,需要按照以下步骤进行操作: 1. 在 docker -compose.yml文件中定义服务: services: my_service: image: my_image 这里的my_service是你要获取网络地址的 容器 的名称,my_image是你所使用的 容器 镜像。 2. 运行 docker -compose up命令启动服务: $ docker -compose up -d 3. 运行 docker inspect命令获取 容器 的网络信息: $ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' < 容器 名称或ID> 将< 容器 名称或ID>替换为你要获取网络地址的 容器 的名称或ID。 4. 通过上述命令,你将获取到 容器 的网络地址。 注意事项: - 确保你已经安装了 Docker docker -compose工具。 - 你可以使用其他 Docker 命令来检查 容器 的网络设置。 - 你可以根据需要在 docker -compose.yml文件中定义多个服务,并使用上述方法获取每个 容器 的网络地址。