专栏首页eadeladocker--docker 网络管理

docker--docker 网络管理

9 docker 网络管理

9.1 默认网络

1、查看docker网络:

docker network ls

Docker中默认的三种网络分别为bridge、host和none,其中名为bridge的网络就是默认 的bridge驱动网络,也是容器创建时默认的网络管理方式,配置后可以与宿主机通信从 而实现与互联网通信功能,而host和none属于无网络,容器添加到这两个网络时不能与 外界网络通信。 这里介绍的三种网络bridge、host和none都是在非集群环境下Docker提供的默认网络, 而在Docker Swarm集群环境下,除了这三种默认网络外,Docker还提供了 docker_gwbridge和ingress两种默认网络。

[root@docker1 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:84ff:fe38:1e99  prefixlen 64  scopeid 0x20<link>
        ether 02:42:84:38:1e:99  txqueuelen 0  (Ethernet)
        RX packets 97  bytes 10346 (10.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 110  bytes 15781 (15.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
​

2 、查看容器使用的网络情况:

docker network inspect bridge

9.2 自定义网络

虽然 Docker提供的默认网络的使用比较简单,但是为了保证各容器中应用的安全性,在 实际开发中更推荐使用自定义的网络进行容器管理。在Docker中,可以自定义bridge网 络、overlay网络,也可以创建network plugin(网络插件)或者远程网络以实现容器网 络的完全定制和控制。

9.2.1 网络类型

  • Bridge networks (桥接网络):

为了保证容器的安全性,我们可以使用基于bridge的驱动创建新的bridge网络,这种 基于bridge驱动的自定义网络可以较好的实现容器隔离。需要说明的是,这种用户自 定义的基于bridge驱动的网络对于单主机的小型网络环境管理是一个不错的选择,但 是对于大型的网络环境管理(如集群)就需要考虑使用自定义overlay集群网络。

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

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

  • Custom network plugins (定制网络插件)

如果前面几种自定义网络都无法满足需求时,就可以使用Docker提供的插件来自定 义网络驱动插件。自定义网络插件会在Docker进程所在主机上作为另一个运行的进 程。自定义网络驱动插件与其他插件遵循相同的限制和安装规则,所有插件都使用 Docker提供的插件API,并且有一个包含安装、启动、停止和激活的生命周期。由于 自定义网络插件使用较少,所以只需了解即可。

9.2.2 自定义网络

1、docker network create ‐‐driver bridge isolated_nw
创建一个基于bridge驱动的名称为isolated_nw的网络。其中‐‐driver(可简写为‐d)用
于指定网络驱动类型,isolated_nw就是新创建的网络名称。需要说明的是,‐‐driver
bridge可以省略,省略时Docker会默认使用基于bridge驱动来创建新的网络。
2、docker run ‐itd ‐‐name=nwtest ‐‐network=isolated_nw busybox
会创建一个名为nwtest的容器,指令中的‐‐network参数指定了该容器的网络连接为自定义
的isolated_nw。通过docker inspect nwtest指令可以查看启动后的容器详情,来核查
其网络管理方式.
3、docker network connect bridge nwtest
会为容器nwtest另添加一种默认的bridge网络管理方式。再次使用docker inspect
nwtest指令查看该容器网络详情
4、docker network disconnect isolated_nw nwtest
断开网络连接的指令与连接网络的指令类似,在使用时也需要指定网络名称和容器名称
5、docker network rm isolated_nw
移除名称为isolated_nw的自定义网络。当网络移除成功后,会返回网络名称。

9.3 容器间的网络通信

1、创建两个使用默认的bridge网络的容器

docker run ‐itd ‐‐name=c1 busybox
docker run ‐itd ‐‐name=c2 busybox

2、创建一个使用自定义的isolated_nw网络(需要预先创建)的容器

docker network create ‐‐driver bridge isolated_nw
docker run ‐‐network=isolated_nw ‐itd ‐‐name=c3 busybox

3、为container2容器新增一个自定义的isolated_nw网络连接

docker network connect isolated_nw c2

C1:172.17.0.3 【bridge】 C2:172.17.0.4 和 172.19.0.3 【bridge、isolated_nw】

C3 :172.19.0.2【isolated_nw】

4、C1、C2、C3网络分配情况如下:

5 、测试容器间通信:分别登录C1、C2、C3容器,通过ping命令判断是否通信。

进入容器docker attach c1
退出容器快捷键 ctrl + q + P
ping ‐w 4 ip地址

6 、结论

不同容器之间想要相互通信必须在同一个网络环境下;使用默认bridge网络管理的容器可以
使用容器IP进行通信,但无法使用容器名称进行通信;而使用自定义网络管理的容器则可以
使用容器IP进行通信

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • docker--docker 容器操作

    我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可 以通过修改宿主机某个目录的文件从而去影响容器。 创建容器 添加-v参数 后边为 宿...

    eadela
  • docker--docker版本以及安装

    Docker CE 在 17.03 版本之前叫 Docker Engine, Docker Engine 的版本号范围: 0.1.0 ~ 1.13.1 在 20...

    eadela
  • docker--docker介绍

    在计算机的世界中,容器拥有一段漫长且传奇的历史。容器与管理程序虚拟化 (hypervisor virtualization,HV)有所不同,管理程序虚拟化通过中...

    eadela
  • docker-compose下的java应用启动顺序两部曲之一:问题分析

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    程序员欣宸
  • Kotlin入门(10)七十二变的输入参数

    上一篇文章介绍了Kotlin对函数的基本用法,包括函数的定义、输入参数的声明、输出参数的声明等等,这些足够对付简单的场合了。当...

    用户4464237
  • 求超大文件上传方案( WebUploader )

    public Map<String, JSONObject> toDic(JSONArray folders)

    用户6892101
  • 他们总说Dubbo泛化是啥啊?

    前几天听同事讨论问题,偶然间冒出来一句,那用Dubbo泛化解决,我就惊奇了一下,要在实际场景用到泛化了吗?我在有道云笔记的2020.3.31篇中首次记录了泛化的...

    疯狂的KK
  • 全面总结国内BATH等大厂开源的安卓有关的库(持续更新中...)

    UltraViewPager 是阿里开源的一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。

    AWeiLoveAndroid
  • 一人饮酒醉?微信官方小程序给你安慰 | 亲儿子 #11

    随着微信团队的不断努力,小程序也变得日益完善。小程序以其方便的使用条件、更低的开发门槛吸引了很多人。

    知晓君
  • android仿微信好友列表功能

    android studio实现微信好友列表功能,注意有一个jar包我没有放上来,请大家到MainActivity中的那个网址里面下载即可,然后把pinyin4...

    砸漏

扫码关注云+社区

领取腾讯云代金券