Docker之网络

Docker之网络

一 Docker 网络管理简介

1 为什么要Docker网络管理

容器的网络默认与宿主机、与其他容器都是相互隔离。

• 容器中可以运行一些网络应用(如nginx、web应用、数据库等),如果要让外部也可以访问这些容器内运行的网络应用,那么就需要配置网络来实现。

• 有可能有的需求下,容器不想让它的网络与宿主机、与其他容器隔离。

• 有可能有的需求下,容器根本不需要网络。

• 有可能有的需求下,容器需要更高的定制化网络(如定制特殊的集群网络、定制容器间的局域网)。

• 有可能有的需求下, 容器数量特别多,体量很大的一系列容器的网络管理如何

因此容器的网络管理是非常重要的

2 Docker中有哪些网络驱动模式

Docker有五种网络驱动模式

•bridge network 模式(网桥):默认的网络模式。类似虚拟机的nat模式

•host network 模式(主机):容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络

•None network 模式:容器禁用所有网络。

•Overlay network 模式(覆盖网络): 利用VXLAN实现的bridge模式

•Macvlan network 模式:容器具备Mac地址,使其显示为网络上的物理设备

二 Docker 网络管理命令

1 查看网络 – docker network ls

# 作用:
	查看已经建立的网络对象
# 命令格式:
	docker network ls [OPTIONS]
# 命令参数(OPTIONS):
	-f, --filter filter   		过滤条件(如 'driver=bridge’)
	    --format string   	格式化打印结果
	    --no-trunc        	不缩略显示
	-q, --quiet          	 	只显示网络对象的ID
# 注意:
	默认情况下,docker安装完成后,会自动创建bridge、host、none三种网络驱动	
# 命令演示
                                 
docker network ls --no-trunc
docker network ls -f 'driver=host'

2 创建网络 – docker network create

# 作用:
	创建新的网络对象
# 命令格式:
	docker network create [OPTIONS] NETWORK
# 命令参数(OPTIONS):
	-d, --driver string        		指定网络的驱动(默认 "bridge")
	    --subnet strings       		指定子网网段(192.168.0.0/16172.88.0.0/24)
	    --ip-range strings     		执行容器的IP范围,格式同subnet参数
	    --gateway strings      		子网的IPv4 or IPv6网关,如(192.168.0.1)
# 注意:
	host和none模式网络只能存在一个
	docker自带的overlay 网络创建依赖于docker swarm(集群负载均衡)服务
	192.168.0.0/16 等于 192.168.0.0~192.168.255.255    192.168.8.0/24
	172.88.0.0/24 等于 172.88.0.0~172.88.0.255
# 命令演示
docker network create -d bridge my-bridge

3 网络删除 – docker network rm

# 作用:
	删除一个或多个网络
# 命令格式:
	docker network rm NETWORK [NETWORK...]
# 命令参数(OPTIONS):

4 查看网络详细信息 – docker network inspect

# 作用:
	查看一个或多个网络的详细信息
# 命令格式:
	docker network inspect [OPTIONS] NETWORK [NETWORK...]
      或者 docker inspect [OPTIONS] NETWORK [NETWORK...]
# 命令参数(OPTIONS):
	-f, --format string   	根据format输出结果

5 使用网络 – docker run –network

# 作用:
	为启动的容器指定网络模式
# 命令格式:
	docker run/create --network NETWORK
# 命令参数(OPTIONS):# 注意:
	默认情况下,docker创建或启动容器时,会默认使用名为bridge的网络

6 网络连接与断开 – docker network connect/disconnect

# 作用:
	将指定容器与指定网络进行连接或者断开连接
# 命令格式:
	docker network connect [OPTIONS] NETWORK CONTAINER
	docker network disconnect [OPTIONS] NETWORK CONTAINER
# 命令参数(OPTIONS):
	-f, --force   		强制断开连接(用于disconnect)

三 Docker 网络模式简介

1 bridge 网络模式(一)

特点:

• 宿主机上需要单独的bridge网卡,如默认docker默认创建的docker0。

• 容器之间、容器与主机之间的网络通信,是借助为每一个容器生成的一对veth pair虚拟网络设备对,进行通信的。一个在容器上,另一个在宿主机上。

• 每创建一个基于bridge网络的容器,都会自动在宿主机上创建一个veth**虚拟网络设备。

• 外部无法直接访问容器。需要建立端口映射才能访问。

• 容器借由veth虚拟设备通过如docker0这种bridge网络设备进行通信。

• 每一容器具有单独的IP

在这里插入图片描述

2 bridge 网络模式(二) – 端口映射(最常用)

# 作用:
	启动的容器时,为容器进行端口映射
# 命令格式:
	docker run/create -P …
      或者 docker run/create –p …
# 命令参数(OPTIONS):
	-P, --publish-all		将容器内部所有暴露端口进行随机映射
	-p, --publish list 	手动指定端口映射
# 注意:
	-p [HOST_IP]:[HOST_PORT]:CONTAINER_PORT
	如:-p ::80		将容器的80端口随机(端口)映射到宿主机任意IP
	       -p :8000:6379 	将容器的6379端口映射到宿主机任意IP的8000端口
	       -p 192.168.5.1::3306	将容器的3306端口随机(端口)映射到宿主机的192.168.5.1IP上

在这里插入图片描述

3 host 网络模式

特点:

• 容器完全共享宿主机的网络。网络没有隔离。宿主机的网络就是容器的网络。

• 容器、主机上的应用所使用的端口不能重复。例如:如果宿主机已经占用了8090端口,那么任何一个host模式的容器都不可以使用8090端口了;反之同理。

• 外部可以直接访问容器,不需要端口映射。

• 容器的IP就是宿主机的IP

在这里插入图片描述

4 特殊host 网络模式(Container网络模式)

• Container网络模式,其实就是容器共享其他容器的网络。
• 相当于该容器,在网络层面上,将其他容器作为“主机”。它们之间的网络没有隔离。
• 这些容器之间的特性同host模式。
使用方法:
  Docker run/create –network container:CONTAINER 

在这里插入图片描述

5 none 网络模式

特点:
 • 容器上没有网络,也无任何网络设备。
 • 如果需要使用网络,需要用户自行安装与配置。
应用场景
 • 该模式适合需要高度定制网络的用户使用。

6 补充与总结

除上述网络模式外,还有overlay网络模式和macvlan网络模式,这两种网络模式使用起来难度较大。重点需要掌握如下:

bridge网络、host网络、Container网络模式的原理和使用(应用得较多,且host网络性能最优)。

docker network命令的使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go&Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值