在进行Docker安装时,Docker就会自动创建三种网络。客户端可以通过网络管理指令进行查看,具体操作指令如下。

$ docker network ls

​ 上述指令用于列举Docker中的所有网络,执行后的效果如图1所示。

图1 Docker默认网络
从图1可以看出,Docker中默认的三种网络分别为bridge、host和none,其中名为bridge的网络就是默认的bridge驱动网络,也是容器创建时默认的网络管理方式,配置后可以与宿主机通信从而实现与互联网通信功能,而host和none属于无网络,容器添加到这两个网络时不能与外界网络通信。

下面通过一个示例来演示默认的bridge网络管理方式,其执行过程如下。

(1)创建并启动容器。在终端窗口中执行如下指令。

$ docker run -itd --name=networktest ubuntu

上述指令在后台启动了一个镜像名称为ubuntu的容器,并为启动后的容器命名为networktest。

(2)使用网络查看指令查看网络详情,具体操作指令如下。

$ docker network inspect bridge

上述指令用于核查名称为bridge的网络详情,需要指明网络名称或者网络ID,执行上述指令后,效果如图2所示。
从图2可以看出,执行上述指令后就会显示出bridge网络的所有详细信息,其中就包括了使用默认的bridge网络管理方式启动的名称为networktest的容器。

需要注意的是,这里介绍的三种网络bridge、host和none都是在非集群环境下Docker提供的默认网络,而在Docker Swarm集群环境下,除了这三种默认网络外,Docker还提供了docker_gwbridge和ingress两种默认网络。

小提示:

在上一章中已经启动了多个容器,并且都是默认使用bridge网络进行管理的。为了不对本章节相关讲解和测试造成干扰,建议先将前面章节创建的容器全部移除。
虽然Docker提供的默认网络的使用比较简单,但是为了保证各容器中应用的安全性,在实际开发中更推荐使用自定义的网络进行容器管理。

在Docker中,可以自定义bridge网络、overlay网络,也可以创建network plugin(网络插件)或者远程网络以实现容器网络的完全定制和控制。接下来将分别针对这几种自定义网络进行讲解。

  1. Bridge networks(桥接网络)

为了保证容器的安全性,我们可以使用基于bridge的驱动创建新的bridge网络,这种基于bridge驱动的自定义网络可以较好的实现容器隔离。

​ 需要说明的是,这种用户自定义的基于bridge驱动的网络对于单主机的小型网络环境管理是一个不错的选择,但是对于大型的网络环境管理(如集群)就需要考虑使用自定义overlay集群网络。

  1. Overlay network in swarm mode(Swarm集群中的覆盖网络)

​ 在Docker Swarm集群环境下可以创建基于overlay驱动的自定义网络。为了保证安全性,Swarm集群使自定义的overlay网络只适用于需要服务的群集中的节点,而不会对外部其他服务或者Docker主机开放。

  1. Custom network plugins(定制网络插件)

​ 如果前面几种自定义网络都无法满足需求时,就可以使用Docker提供的插件来自定义网络驱动插件。自定义网络插件会在Docker进程所在主机上作为另一个运行的进程。

自定义网络驱动插件与其他插件遵循相同的限制和安装规则,所有插件都使用Docker提供的插件API,并且有一个包含安装、启动、停止和激活的生命周期。由于自定义网络插件使用较少,所以读者只需了解即可。
上一节已经对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可以看出,新创建的isolated_nw网络已经在列表中展示出来,这说明新的bridge网络创建成功。

除docker network ls指令外,还可以使用docker network inspect指令查看新建网络的详细信息。

  1. 使用自定义网络启动容器

自定义网络创建成功后,就可以使用该网络启动一个容器,具体操作指令如下。

$ docker run --network=isolated_nw -itd --name=nwtest busybox

执行上述指令后,会创建一个名为nwtest的容器,指令中的–network参数指定了该容器的网络连接为自定义的isolated_nw。

通过docker inspect nwtest指令可以查看启动后的容器详情,来核查其网络管理方式,效果如图2所示。
从图2可以看出,名为nwtest的容器使用的就是自定义的isolated_nw网络进行容器网络管理的。

  1. 为容器添加网络管理

名为nwtest的容器使用的只有自定义的isolated_nw一种网络管理方式,我们还可以继续为该容器添加其他网络管理方式,具体操作指令如下。

$ docker network connect bridge nwtest

执行上述指令后,会为容器nwtest另添加一种默认的bridge网络管理方式。再次使用docker inspect nwtest指令查看该容器网络详情,效果如图3所示。
从图3可以看出,执行完为容器添加网络管理的指令后,容器nwtest就拥有了两种网络管理方式,分别为默认的bridge网络和自定义的isolated_nw网络。

  1. 断开容器网络连接

​ 容器既可以连接网络,也可以断开网络。这里以断开nwtest容器的自定义网络isolated_nw为例进行演示,断开网络连接的指令如下。

$ docker network disconnect isolated_nw nwtest

​ 断开网络连接的指令与连接网络的指令类似,在使用时也需要指定网络名称和容器名称。

小提示:

一个容器可以有一到多个网络连接,当使用断开网络连接的指令将一个容器内的所有的网络连接方式全部断开后,虽然容器还在运行,但是容器内部的应用将无法被外界访问。

  1. 移除自定义网络

​ 当不再需要某个网络时,可以将该网络移除,但在移除网络之前,一定要先将所有与该网络连接的容器断开。移除自定义网络的指令如下。

$ docker network rm isolated_nw

​ 执行上述指令后,就可以移除名称为isolated_nw的自定义网络。当网络移除成功后,会返回网络名称。为了验证网络是否移除成功,可以使用docker network ls指令列举所有网络进一步确认。

Docker默认网络管理相关推荐

  1. Ubuntu修改Docker默认存储路径

    Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等.不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了后就容易 ...

  2. 修改docker默认网桥

    这里介绍两种修改docker默认网桥的方法,这两种方法都是通过修改daemon.json文件实现的. 第一种 1.删除旧网络 $ sudo service docker stop $ sudo ip ...

  3. Docker容器网络管理

    Docker容器网络管理 一.查看系统与容器版本 1.系统版本 2.查看容器版本 二.查看docker网络情况 1.查看docker网络列表 2.查看具体网络情况 二.Docker的四种网络模式 1. ...

  4. Centos7修改Docker默认存储位置

    Centos7修改Docker默认存储位置 一.前言 Centos7安装docker之后,默认的镜像及容器存储路径为/var/lib/docker,可以使用命令docker info查看. 但是该路径 ...

  5. 修改Docker默认存储位置的方法

    在日常使用中由于我们的根目录通常都比较小,如果想大量存储容器镜像的话很容易导致根目录写满 docker 默认的数据目录是/var/lib/docker 我们想要移动数据目录可以按照下面说明操作即可. ...

  6. 在Centos7 更改Docker默认镜像和容器的位置

    在Centos7 更改Docker默认镜像和容器的位置 一.Why? 通常,当你开始使用docker时,我们并不太关心Docker 用于存储镜像和容器的默认目录.当使用Docker进行更多实验时,Do ...

  7. Docker默认存储路径修改

    Docker默认存储路径: # docker info ...... Data loop file: /var/lib/docker/devicemapper/devicemapper/data .. ...

  8. 修改Docker默认安装路径

    本人是个重度强迫症,所有的软件,都不安装到C盘(系统盘).所以在安装Docker时,也遇到了整个问题.无法更改安装路径,默认安装在C盘,这就让人很不爽,我的电脑,我居然决定不了软件的安装位置?!(其实 ...

  9. docker默认ip地址修改

    通常情况下docker服务安装后,docker默认使用的网络IP段是172.17.0.1/24,这样容易对实际环境造成冲突.为了解决这个问题,我们介绍一个可行的解决办法 注: 本文基于centos7以 ...

最新文章

  1. Ext4文件系统架构分析(一)
  2. [转]---UAP中如何判断当前APP在哪个平台设备上运行
  3. spring boot数据库操作汇总
  4. 机器学习-集成学习-提升树-LightGBM
  5. linux 运行cmd文件,cmd文件如何在虚拟linux下运行
  6. python匿名函数lambda_python的匿名函数lambda解释及用法
  7. .NET Core 小程序开发零基础系列(1)——开发者启用并牵手成功
  8. 小学有学计算机课程,如何进行小学计算机课程有效教学.doc
  9. 在Linux中head命令,Linux 中 head 命令实例
  10. 直击中关村创业大街,新街头霸王来了
  11. 给DataList分页有两个办法:1、自定义实现分页方法 2、用第三方控件(例如AspNetPager)
  12. (Command Pattern)命令模式
  13. linux桥接设置静态,centos6.10 桥接模式下配置静态ip
  14. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据
  15. WPS2019专业版办公软件安装包+永久授权码!
  16. PDF 文档解除密码
  17. MODIS,Himwari-8遥感数据介绍
  18. 大学计算机思维导论第七讲答案,中国大学MOOC计算思维导论网课答案
  19. html字体中英文设置,用 CSS3 指定网页的中英文分别使用不同字体
  20. Spring Web 编程详解

热门文章

  1. 使用nodejs构建Docker image最佳实践
  2. Libra教程之:Transaction的生命周期
  3. 内存模型 C++ 和Java内存模型
  4. Spring Boot——RabbitMQ
  5. C++学习笔记:(七)C语言实现面向对象编程
  6. Codeup-问题 A: 最大连续子序列
  7. 【终极方法】解决IDEA搜索不到Lombok插件的问题(IDEA 不能识别 @Slf4j,@Getter ,@Setter注解)
  8. 哥尼斯堡的“七桥问题” (25 分)【欧拉回路模板题】
  9. formdata接收数据怎么接收数组_LBT是什么?怎么增加通信可靠性?
  10. 关于5G技术和5G技术即将面临的各项挑战