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进行通信

docker--docker 网络管理的更多相关文章

  1. [Docker] docker 基础学习笔记3(共6篇)

    首先我们安装好了ssh server之后, 我们需要将这个容器commit,然后启动这个被commit的image. 启动方式: docker run -d -p 2222:22 /usr/sbin/ ...

  2. [Docker] docker 基础学习笔记1(共6篇)

    巩固一下yum: yum本身是centos自带的软件,可以删掉然后再重新安装. yum本身可以配置yum源,网络的,本地的都可以.之后安装docker需要配置一个扩展源.   从163的网址里边下载好 ...

  3. Docker - Docker国内镜像的配置及使用

    Docker国内镜像 DaoCloud - Docker加速器 阿里云 - 开发者平台 微镜像 - 希云cSphere 镜像广场 - 时速云 灵雀云 网易蜂巢 阿里云的Docker加速器 阿里云 - ...

  4. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  5. Docker - Docker基础讲义

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 虚拟化技术 硬件级虚拟化(hardware-level-virtualizatio ...

  6. 菜鸟系列docker——docker镜像下(5)

    1. docker镜像构建 该章节主要介绍2种构建docker镜像的方式.当然,当前基本上需要的基础镜像都有,直接使用即可.例如数据库.中间件之类的,只需要拿来使用即可,但是依然存在需要开发者构建镜像 ...

  7. 菜鸟系列docker——docker镜像中(4)

    docker镜像命令 该章节主要介绍docker image相关命令实践操作,建议都一起跑一边 1. docker images 列举本机docker镜像 [centos@jiliguo docker ...

  8. 菜鸟系列docker——docker镜像上(3)

    1. 镜像image 镜像和容器的关系就和安装包和程序的关系一样,有了镜像才可以启动容器,容器是镜像的一个运行实例. 1.1 镜像的结构 通过第二节仓库,可能很多看官已经查看到镜像是分层的,接下来将对 ...

  9. Docker - Docker与Vagrant的区别

    Docker Docker - HomePage Wiki - Docker Docker简介 Overview Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协 ...

  10. [转帖]Docker里运行Docker docker in docker(dind)

    Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...

随机推荐

  1. 【洛谷P2292】L语言

    题目大意:给定一个长度为 N 的字符串和一个字典,字典中所有的字符串的长度均不超过 10,求给定的字符串从前往后最多有多少位可以与字典匹配. 题解:设 \(dp[i]\) 表示串的前 i 位是否能够与 ...

  2. CodeForces-721C-Journey(DAG, DP)

    链接: https://vjudge.net/problem/CodeForces-721C 题意: Recently Irina arrived to one of the most famous ...

  3. java——hasCode是如何对应到数组索引的?为什么HashMap的initailCapacity要设置成2的n次幂?为什么要树化hashMap?

    一: 源代码是这样实现的: static final int hash(Object var0) { int var1; return var0 == null ? 0 : (var1 = var0. ...

  4. layui中从子窗口传递数据到父窗口,第三个子弹层的值传给第二个弹层

    最近做一个项目的需要多个弹层,每个弹层中还需要数据传递, 经过测试,以下方法三个弹层才有效,如果只是有两个弹层,请用其它方法 大概如图,看图自己应该明白 如何在在b页面选择好的值传给a页面的问题,这个 ...

  5. 安装caffe碰到的坑(各种.so未找到)

    ./include/caffe/common.hpp:4:32: fatal error: boost/shared_ptr.hpp: 没有那个文件或目录 所有类似于上面的错误,都可以用如下格式来解决 ...

  6. postman-变量

    Variables 什么是变量 变量是一个符号,可以接受不同的值.你可能根据你的项目经验,对其他语言的变量比较熟悉.在postman 的工作原理也是一样的 为什么使用变量 变量允许你在不同的地方重复使 ...

  7. jquery empty选择器 语法

    jquery empty选择器 语法 作用::empty 选择器选取空的元素.空元素指的是不包含子元素或文本的元素.直线电机滑台 语法:$(":empty") jquery emp ...

  8. 【bzoj2763】[JLOI2011]飞行路线

    *题目描述: Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一 ...

  9. Android学习笔记之Menu的ShowAsAction属性的设置

    (1)在res--menu目录下的main.xml文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2 ...

  10. for aws associate exam

    Topics which I read based on the previous forum discussions Amazon DynamoDB January 2016 Day at the ...