类型 | 说明 |
---|---|
None | 不为容器配置任何网络功能,没有网络 。 声明:--network none |
Host | 与主机共享网络空间。 --network host |
Container | 与指定的运行中的容器共享网络空间. --network container:container ID |
Bridge | Docker设计的NAT网络模型(默认类型),为每一个容器分配、设置 IP 等,并将容器连接到一个 docker0 的虚拟网桥(交换机) |
目录
1、none(不为容器配置网络功能)
此模式下创建容器是不会为容器配置任何网络参数的,如:容器网卡、IP、通信路由等,全部需要自己去配置。
[root@docker ~]# docker run -it --network none busybox:latest /bin/sh
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
-i 以交互式的方式运行
-t 为容器分配终端
--network 指定网络类型
2、host(使用宿主机网络 )
此模式创建的容器没有自己独立的网络命名空间,是和物理机共享一个Network Namespace,并且共享物理机的所有端口与IP,这个模式认为是不安全的。
[root@docker ~]# docker run -it --network host busybox:latest /bin/sh
3、Container(与其他容器共享网络配置)
此模式容器自身是不会配置网络和端口,创建此模式容器进去后,容器里边的IP是指定容器的IP并且端口也是共享的,而且其它还是互相隔离的,如进程等。
[root@docker ~]# docker inspect blissful_blackwell #查看容器详细信息
[root@docker ~]# docker run -it --network container:mywordpress_db_1 busybox:latest /bin/sh
/ # ip a #进入了容器,查看容器ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
105: eth0@if106: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.15.0.3/16 brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
4、Bridge(Docker设计的NAT网络模型(默认类型),为每一个容器分配、设置 IP)
1、配置桥接网卡
[root@docker ~]# yum -y install bridge-utils.x86_64 #先安装桥接工具
2、开启内核网络转发
[root@docker ~]# sysctl net.ipv4.conf.all.forwarding=1
[root@docker ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@docker01 ~]# sysctl -p #使配置生效
3、修改网卡的配置,实现桥接网络模式
# 备份网卡配置文件,修改eth0配置,让br0实现桥接
[root@docker ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
[root@docker01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 #没有该文件,需创建
TYPE=Bridge #类型
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.152.187 #IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.152.2.254 #网关
DNS1=223.5.5.5 #域名服务器
# 重启网络
[root@docker ~]# systemctl restart network
ifcfg-br0 相当于linux系统创建了一个linux网桥br0 ,创建容器后,使用pipework 工具将容器网络接口加入到br0网桥!