一.相关介绍
docker的桥接网络使用虚拟网桥,bridge网络用于同一主机上的docker容器相互通信,连接到同一个网桥的docker容器可以相互通信,当我们启动docke时,会自动创建一个默认bridge网络,除非我们进行另外的配置,新创建的容器都会自动连接到这个网络,我们也可以自定义自己的bridge网络,docker文档建议使用自定义bridge网络,默认的bridge网络具有一定的缺陷
连接到同一bridge网络的容器可以相互访问彼此任意一个端口,如果不发布端口,外界将无法访问这些容器,在创建容器时,通过-p或是–publish指令发布端口
自定义bridge网络与默认bridge网络对比:
- 默认桥接网络中的容器只能通过IP地址访问其他容器(除非使用遗留的-link指令连接两个容器),而自定义桥接网络提供DNS解析,可以通过容器的名字或是别名访问其他容器
- 容器可以自由的进入或是退出自定义桥接网络,如果想要退出默认桥接网络,需要先停止容器的运行,然后重新创建该容器,并指定需要连接的其他网络
- 如果更改了默认桥接网络的网络配置,需要重新启动docker,并且由于默认桥接网络只有一个,因此所有容器的网络配置都是一样的,而用户自定义网络可以在创建时指定网络配置(例如默认网关、MTU等),不需要重启docker,灵活性更高
- 在默认桥接网络中,可以通过–link参数连接两个容器来共享环境变量,用户自定义网络中无法使用这种方式,但是docker提供了更好的方式:
- 多个容器可以使用docker volume(这是docker存储数据的一种方式,以后会介绍)挂载到同一个文件,在文件中指明环境变量,从而实现所容器的环境变量共享
- 多个容器可以使用同一个docker-compose(与docker service有关)文件启动,可以在该文件中定义共享环境变量
- 可以使用swarm services,并且通过secrets和configs (这两个还没看)实现环境变量共享
二.使用自定义网络
1、创建一个自定义网络
(1)创建lss-net的网络
docker network create lss-net
可以指定子网、IP地址范围、网关等网络配置,更多请查看:
https://docs.docker.com/engine/reference/commandline/network_create/#specify-advanced-options
(2)查看下本机的网络列表,发现已添加进去
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
19fa32c5bc3e bridge bridge local
9d978517ef6f host host local
c955f4b320ed lss-net bridge local
710c293e1490 none null local
(3)移除自定义网络
docker network rm lss-net