Docker网络的学习
- 用户是使用Docker Client与 Docker Daemon建立通信,并发送请求给后者
- Docker Daemon作为Docker架构中主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求
- Docker Engine执行Docker内部的一系列工作,每一项工作都是以Job的形式存在
- Job的运行过程中,当需要容器镜像时则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储
- 当需要为Docker创建网络环境时,通过网络管理驱动Network driver 创建并配置Docker容器网络环境
- 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成
- Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作
操作系统本身网络
- 桥接模式 - 直接连接物理网络
- NAT模式 - 用于共享主机的IP地址
- 仅主机模式 - 与主机共享的专用网络
- 用户自定义模式 - 特定的虚拟网络
docker 不启动 默认网络情况
docker 启动后 网络情况
docker 启动后会产生一个名为docker0的虚拟网桥
ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:e9ff:fee5:668a prefixlen 64 scopeid 0x20<link>
ether 02:42:e9:e5:66:8a txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 266 (266.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Docker 网络的常用命令
默认创建3大网络模式
bridge 网桥模式
host 主机网络
none 无网络
还有两种:
容器模式
自定义模式
共计5种
docker network ls
NETWORK ID NAME DRIVER SCOPE
f14cce59440e bridge bridge local
b171456906be host host local
73342418fb83 none null local
查看命令帮助
docker network --help
创建网络
docker network create a_network
删除网络
docker network rm a_network
查看网络数据源
docker network inspect bridge
Docker 网络能干啥
容器间的互联和通信以及端口映射
容器IP变动的时候可以通过服务名直接网络通信而不收到影响
Docker 网络模式
默认三大网络模式 共计5种
bridge 网桥模式
host 主机网络
none 无网络
容器模式
自定义模式
bridge
为每个容器分配、设置IP等,并将容器连接到一个docker0的虚拟网桥,默认为该模式
bridge模式:使用--network bridge 指定,默认使用docker0
host
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
host模式:使用--network host 指定
none
容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,IP等
none模式:使用--network none指定
container
新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等。
container模式:使用--network container:NAME或者容器ID指定
共有 0 条评论