Docker网络
基本概念
是什么?
是docker对容器网络隔离的一项技术,提供了多种不同的模式供用户使用,选择不同的网络模式来实现容器网络的互通以及彻底的隔离。
为什么需要?
- 实现容器间的网络隔离
- 实现部分容器之间的网络共享
- 管理多个子网下容器的IP
能干什么
- 提供了多种模式,可以定制化的为每个容器置顶不同的网络
- 自定义网络模式,划分不同的子网以及网关、dns等配置
- 网络互通
- 实现不同子网之间的网络互通
- 基于容器名(主机名)的方式在网络内访问
网络模式
bridge(桥接)
在主机中创建一个叫docker0
的网桥,在docker0
基础之上创建一对虚拟网卡。有一半在主机上,一半在容器内
bridge模式默认不能域名解析
加--link参数实现域名解析
host(主机)
容器不再拥有自己的网络空间,而是直接与主机共享网络空间,那么基于该模式创建的容器对应的ip实际就是与主机同一个子网,同一个网段。
none
Docker 会拥有自己的网络空间,不与主机共享,在这个网络模式下的容器不会被分配网卡、IP、路由等相关信息。
特点:完全隔离,与外部任何机器都无网络访问,只有自己的本地网络127.0.0.1
container
不会创建自己的网络空间,而是与其它容器共享网络空间,直接使用指定容器的ip或者端口等。
自定义(推荐)
不使用docker自带的网络模式,而是自己定制化自己特有的网络模式。
命令:
docker network COMMAND
跨容器网络通信
- 创建两个不同网络模式的容器,发现无法直接通信
- 使用connect连接两个网络