一、基本概念
1.1 是什么
(1)docker不启动,使用 ifconfig 查看网络,默认网络情况:ens33、lo、virbr0
(2)docker 启动后,使用 ifconfig 查看网络,会产生一个名为 docker0 的虚拟网桥
1.2 能干嘛
(1) 容器间的互联和通信以及端口映射
(2) 容器IP变动时候可以通过服务名直接网络通信而不受到影响
二、常用基本命令
1、docker network connect 容器连接网络
2、docker network disconnect 容器断开网络
3、docker network create xxx网络 创建网络
4、docker network rm xxx网络 删除一个或者多个网络
5、docker network prune xxx网络 删除所有没有被使用到的网络
6、docker network ls 列出当前所有网络
7、docker network inspect 展示某个网络的详细信息
三、网络模式
3.1 总体介绍
1、bridge模式:使用--network bridge指定,默认使用docker0
2、host模式:使用--network host指定
3、none模式:使用--network none指定
4、container模式:使用--network container:NAME或者容器ID指定
【注】 docker容器内部的ip是有可能会发生改变的 !
四、整体架构图
4.1 架构图
4.2 说明
从其架构和运行流程来看,Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,众多模块各司其职。
Docker 运行的基本流程为:
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来实现具体对容器进行的操作。