zoukankan      html  css  js  c++  java
  • 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进行通信

     

  • 相关阅读:
    LeetCode Subsets II
    LeetCode Rotate Image
    LeetCode Palidrome Number
    LeetCode Generate Parentheses
    LeetCode Maximum Subarray
    LeetCode Set Matrix Zeroes
    LeetCode Remove Nth Node From End of List
    Linux Loop设备 使用
    Linux 文件系统大小调整
    LeetCode N-Queens II
  • 原文地址:https://www.cnblogs.com/eadela/p/11927257.html
Copyright © 2011-2022 走看看