Docker学习高级篇02-docker网络简介
0x00 复习一下之前的知识
1、用户使用Docker Client与Docker Daemon建立通信,并发送请求给后者
2、Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求
3、Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在
4、Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储。
5、当需要为Docker创建网络环境时,通过网络管理驱动Network Driver创建并配置Docker容器网络环境。
6、当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Execdriver来完成
7、Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。


0x01 docker network是什么?能干嘛?
docker不启动,默认的网络(网卡)情况


virbr0
在Centos7的安装过程中如果有选择相关虚拟化的服务安装系统后,启动网卡时会发现有一个以网桥链接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚拟网卡提供NAT访问外网的功能。
我们之前学习Linux安装,勾选安装系统的时候,附带了libvirt服务才会生成的一个东西,如果不需要可以直接将libvirtd服务卸载。
yum remove libvirt-libs.x86_64
docker启动后,默认的网络(网卡)情况
除了上面说的三个,多出了一个docker0虚拟网桥

安装完docker后,默认创建的3大网络模式,主要用的是bridge,勉强用host,一般不用none
docker network ls

0x02 常用基本命令
docker network --help

docker network create aa_network
docker network ls
docker network inspect aa_network
docker network rm aa_network


通过docker inspect bridge可以看出来我们的网卡名字默认就是docker0

docker网络能干吗?
现在我们通过一个docker来建立起一个。docker网络管理和容器调用之间的规划。
容器间的互联和通信以及端口映射。容器IP变动时候可以通过服务名直接网络通信而不受到影响。
0x03 docker网络模式分类
总体介绍
| 网络模式 | 简介 |
|---|---|
| bridge | 为每一个容器分配、设置IP等,并将容器链接到一个叫docker0的虚拟网桥,默认为此模式 |
| host | 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口 |
| none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网络链接,IP等 |
| container | 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP,端口范围 |
bridge就相当于30个人用自己的电脑来看电影
host即30个人去电影院看同一个屏幕的电影
none几乎不用,没有做任何的配置,需要自己去配置。一般不用。
container 我屏幕坏了,借用同桌的屏幕来看电影。和指定的容器共享IP。
bridge模式:使用--network bridge指定,默认使用docker0
host模式:使用--network host指定
none模式:使用--network none指定
container模式:使用--network container:NAME或者容器ID指定
docker network底层ip和容器映射变化
通过 下方命令可以看出两个容器的IP都是唯一的,就是默认bridge。但是如果这时候其中一个容器坏了,再重新启动一个容器,发现IP还是和之前的一样,还是03。
docker run -it --name=u1 ubuntu /bin/bash
docker run -it --name=u2 ubuntu /bin/bash
docker inspect u1 | tail -n 20
docker inspect u2 | tail -n 20

结论:docker容器内部的ip是有可能发生变化的,所以我们要规划好我们的服务,写好我们的服务。所以某些网络就必须跑在我们指定的网络范围内,例如通过新建一个网络。
docker network create bb_network

浙公网安备 33010602011771号