文章目录
1. Docker Network简介
从Docker的架构和运作流程来看,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。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容器运行资源或执行用户命令的时候,则通过Execdriver来完成
- Libcontainer是一项独立的容器管理包,NetWork driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作
我们可以使用下面的命令来查看docker的所有网络情况:
docker network ls
bridge host 和 none是Docker 默认创建的
使用下面命令可以创建一个docker network:
docker network create test_network
使用下面命令可以删除一个docker网络:
docker network rm test_network
使用下面命令可以查看某个网络的详细信息:
docker network inspect bridge
Docker网络主要是实现两个功能:
- 容器间的互联和同学以及端口映射
- 容器IP变动时可以通过服务名直接网络通信而不受到影响
2. Docker 网络模式
签名说到Docker会默认给我们创建bridge、host和none三个网络模式。Docker常见的网络模式如下所示:
网络模式 | 简介 | 使用方式 |
---|---|---|
bridge | 为每一个容器分配、设置IP,并将容器链接到一个docker0,虚拟网桥,docker默认为该模式 | –network bridge指定,默认是docker 0 |
host | 容器将不会虚拟出自己的网卡,配置自己的IP地址,而是使用宿主机的IP和端口 | 使用–network host指定 |
none</ |