docker容器网络

docker容器网络

Docker在安装后自动提供3种网络,使用docker network ls命令查看

[root@suna ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
016887b34684        bridge              bridge              local
7548a06f8474        host                host                local
75bffc9dab2d        none                null                local

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

1. docker四种网络模式

网络模式配置说明
bridge–network bridge默认模式
host–network host容器和宿主机共享Network namespace
container–network container:NAME_OR_ID容器和另外一个容器共享Network namespace
none–network none容器有独立的Network namespace,
但并没有对其进行任何网络设置,
如分配veth pair 和网桥连接,配置IP等

1.1 bridge模式

Docker的默认网络模式,创建出来的Docker容器连接到Docker网桥上。
作为最常规的模式,bridge模式已经可以满足Docker容器最基本的使用需求了。然而其与外界通信使用NAT,增加了通信的复杂性,在复杂场景下使用会有诸多限制。
在这里插入图片描述

[root@suna ~]# brctl show
bridge name	 bridge id			STP enabled		interfaces
docker0		 8000.0242c809ae49	no				veth5527c82
												veth5c21Oe9
[root@suna]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu 1500
	inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
	inet6 fe80::42:17ff:fe9c:cb6b prefixlen 64 scopeid 0x20<link>
	ether 02:42:17:9c:cb:6b txqueuelen 0(Ethernet)
	RX packets O bytes 0 (0.0 B)
	RX errors 0 dropped 0overruns O frame 0
	TX packets 5 bytes 446 (446.0 B)
	TX errors 0 dropped 0 overruns 0 carrier 0 collision 0

1.2 Host模式

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址,但是文件系统、进程等还是和宿主机隔离的。
很好地解决了容器与外界通信的地址转换问题,可以直接使用宿主机的IP进行通信,不存在虚拟化网络带来的额外性能负担。也降低了容器与容器之间、容器与宿主机之间网络层面的隔离性,引起网络资源的竞争与冲突。
适用于对于容器集群规模不大的场景。
在这里插入图片描述

[root@suna]# docker container run -it --name=test_bus --network=host busybox  //新建容器
[root@suna]# ip a
1: lo: <LO0PBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
	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
	inet6 ::1/128 scope host
	valid_lft forever preferred_lft forever
2: ens33:<BROADCAST,MULTiCAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast qlen 1000
	link/ether 00:0c:29:f7:55:53 brd ff:ff:ff:ff:ff:ff
	inet 192.168.32.150/24 brd_192.168.3.255scope global dynamic ens33
	valid_lft 79893sec preferred_lft 79893sec
	inet6 fe80: : 300d:17d3:dd1a:5895764 scope link
	valid_lft forever preferred_lft forever
3: docker0:<BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc noqueue
	link/ether 02:42:17:9c:cb:6b brd ff:ff:ff:ff:ff:ff
	inet 172.17.0.1/16 brd 172.17.255.255 scope global dockerO
	valid_lft forever preferred_lft forever
	inet6 fe80: :42:17ff:fe9c:cb6b/64 scope link
	valid_lft forever preferred_lft forever

1.3 container模式

新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享
新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等
同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
在这里插入图片描述

1.4 none模式

网络环境为 none,即不为 Docker Container 任何的网络环境。一旦 Docker Container 采用了none 网络模式,那么容器内部就只能使用 loopback 网络设备,不会再有其他的网络资源。可以说 none 模式为 Docker Container 做了极少的网络设定,在没有网络配置的情况下,作为 Docker 开发者,才能在这基础做其他无限多可能的网络定制开发。
在这里插入图片描述

[root@suna]# ifconfig
lo		Link encap:Local Loopback
		inet addr: 127.0.0.1 Mask: 255.0.0.0
		UP LOOPBACK RUNNING MTU: 65536 Metric:1
		RX packets:0 errors:0 dropped:0 overruns:0 frame:O
		TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
		collisions:0 txqueuelen:10oo
		RX bytes:0 (0.0B TX bytes:0 (0.0 B)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值