头图

  由于Docker的容器彼此之间是逻辑隔离的,所以,在安装Docker时会为在容器创建隔离的网络环境。在该隔离的网络模式环境下,运行在宿主机上的各个容器具有完全独立的网络栈,并且Docker容器的网络环境与宿主机相互隔离。通过配置使用Docker的不同网络模式,可以使容器共享宿主机的网络命名空间,也可以实现容器间的相互访问。视频讲解如下:

https://www.bilibili.com/video/BV1vw4m1v7Dj/?aid=1105571193&c...

  Docker一共提供了4种网络模式:bridge、container、host和none。下表对比了这4种通信模式的特点。
在这里插入图片描述
  Bridge网络模式是Docker容器默认的网络模式。利用Bridge模式,可以非常方便地实现容器与容器之间、容器与宿主机之间的网络隔离。并且通过使用宿主机上的docker0网桥,容器可以实现与宿主机乃至外部网络进行相互的网络通信。下图说明了Bridge模式的工作机制。
在这里插入图片描述
  下面通过示例演示如何使用bridge模式。
(1)使用busybox镜像创建容器。

docker run -it --network=bridge busybox /bin/sh
提示:这里的--network=bridge可以不写,默认就是bridge模式。
busybox是一个集成了一百多个最常用Linux命令和工具的软件工具箱,如cat、echo等;它也包含了一些更大、更复杂的工具,如grep、find、mount及telnet等。

(2)在容器内部执行命令“ifconfig”查看容器的网络信息,如下图所示。
在这里插入图片描述
  在默认情况下,Docker引擎会自动创建一个bridge网络。Docker引擎同时也为用户提供了自定义bridge网络的方式。利用该方式,用户可以自定义bridge的子网地址和网关等参数。

提示:用户自定义bridge网络是在生产环境中推荐到最佳方式。

(1)执行下面的命令自定义bridge网络。

docker network create -d bridge --ip-range=192.168.1.0/24 --gateway=192.168.1.1 --subnet=192.168.1.0/24 bridge2

  其中的参数如下:

  • -d:指定网络模式的类型,默认值是bridge。
  • --ip-range:指定子网分配IP的范围。
  • --gateway:指定网关的IP地址。
  • --subnet:指定子网的IP地址。
  • bridge2:自定义bridge网络的名称。

(2)查看Docker的网络。这时就可以看到新创建的bridge2,如下图所示。

docker network ls

在这里插入图片描述
(3)使用bridge2创建一个容器,这里通过参数--ip指定了容器的IP地址。

docker run -it --network=bridge2 --ip=192.168.1.3 busybox 

(4)在容器内执行命令“ifconfig”查看网络信息,如下图所示。
在这里插入图片描述


赵渝强老师
30 声望10 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...