自定义bridge网络
上一节已经对Docker中几种常用的自定义网络进行了简单介绍,本小节将针对非集群环境下基于bridge驱动的自定义网络进行详细讲解。
1. 创建自定义网络
在Docker主机上可以使用docker network create指令来创建网络,具体操作指令如下。
$ docker network create --driver bridge isolated_nw
执行上述指令可以创建一个基于bridge驱动的名称为isolated_nw的网络。其中--driver(可简写为-d)用于指定网络驱动类型,isolated_nw就是新创建的网络名称。需要说明的是,--driver bridge可以省略,省略时Docker会默认使用基于bridge驱动来创建新的网络。
创建完网络后,可以使用docker network ls指令查看创建的网络是否成功,效果如图1所示。
图1 Docker网络列表
从图1可以看出,新创建的isolated_nw网络已经在列表中展示出来,这说明新的bridge网络创建成功。
除docker network ls指令外,还可以使用docker network inspect指令查看新建网络的详细信息。
2. 使用自定义网络启动容器
自定义网络创建成功后,就可以使用该网络启动一个容器,具体操作指令如下。
$ docker run --network=isolated_nw -itd --name=nwtest busybox
执行上述指令后,会创建一个名为nwtest的容器,指令中的--network参数指定了该容器的网络连接为自定义的isolated_nw。
通过docker inspect nwtest指令可以查看启动后的容器详情,来核查其网络管理方式,效果如图2所示。
图2 Docker容器网络详情
从图2可以看出,名为nwtest的容器使用的就是自定义的isolated_nw网络进行容器网络管理的。
3. 为容器添加网络管理
名为nwtest的容器使用的只有自定义的isolated_nw一种网络管理方式,我们还可以继续为该容器添加其他网络管理方式,具体操作指令如下。
$ docker network connect bridge nwtest
执行上述指令后,会为容器nwtest另添加一种默认的bridge网络管理方式。再次使用docker inspect nwtest指令查看该容器网络详情,效果如图3所示。
图3 Docker容器网络详情
从图3可以看出,执行完为容器添加网络管理的指令后,容器nwtest就拥有了两种网络管理方式,分别为默认的bridge网络和自定义的isolated_nw网络。
4. 断开容器网络连接
容器既可以连接网络,也可以断开网络。这里以断开nwtest容器的自定义网络isolated_nw为例进行演示,断开网络连接的指令如下。
$ docker network disconnect isolated_nw nwtest
断开网络连接的指令与连接网络的指令类似,在使用时也需要指定网络名称和容器名称。
小提示:
一个容器可以有一到多个网络连接,当使用断开网络连接的指令将一个容器内的所有的网络连接方式全部断开后,虽然容器还在运行,但是容器内部的应用将无法被外界访问。
5. 移除自定义网络
当不再需要某个网络时,可以将该网络移除,但在移除网络之前,一定要先将所有与该网络连接的容器断开。移除自定义网络的指令如下。
$ docker network rm isolated_nw
执行上述指令后,就可以移除名称为isolated_nw的自定义网络。当网络移除成功后,会返回网络名称。为了验证网络是否移除成功,可以使用docker network ls指令列举所有网络进一步确认。