单个host上的容器的网络:通过本章的学习,我们知道docker默认有三种网络,可以通过docker network ls查看;

none:封闭的网络,通过--network=none来指定;

host:将host主机上面的网络完全映射到容器中;

bridge:桥接网络,默认情况下容器使用的是bridge,并将容器网络桥接到docker0上;可以通过brctl show查看桥接情况

我们可以创建user-defined网络,user-defined也分为三种:bridge,overlay,macvlan,本节重点讨论的是bridge,其他两个主要用来实现跨主机的网络;

通过docker network create --driver bridge <网络名>来创建bridge网络,通过docker network inspect查看bridge的subnet以及gateway;

我们新建bridge网络的时候可以通过--subnet和--gateway来指定bridge的网段和网关;

运行容器的时候我们通过--network=<新建的网络名>指定容器使用的网段,通过--ip指定容器的ip;

通过docker network rm<网络ID>来删除不用的网络,前提是这个网络没有被使用。

我们还学习了容器与容器之间的通信:证明了在同一个网络下的容器之间可以互相通信;在不同网络的容器可以设置iptables来实现,也可以通过docker network connect  <网络名> <容器名> 来给容器增加一个不同网段的新网卡来实现不同网段的容器之间的通信;

容器间的通信方式有三种:IP通信,DNS通信,joined方式通信

最后学习了容器如何与外部进行通信:通过NAT的方式来实现容器访问外网:容器发送请求先到桥接网卡(docker0),桥接网卡发现是访问外网的通过NAT进行网络地址转换,将容器的地址转换成host的地址,通过host的地址访问外部;

通过端口映射的方式实现了外部访问容器:首先启动容器的时候要通过-p设置容器映射的端口,每映射一个端口,host都会启动一个docker-proxy的进程;当外部有请求过来时,先访问host对应的端口,然后通过docker-proxy将请求转发到容器对应的端口,容器在将结果返回。

本节的命令总结:

brctl show:桥接情况

docker  network ls:查看docker网络

docker network create --driver bridge --subnet --gateway docker1:创建一个docker1的bridge网络

--driver bridge:驱动类型为bridge ;--subnet指定网段;--gateway指定网关

docker run -d --network=none/host/docker1 --ip 192.168.2.2 busybox :运行一个容器指定他使用的网络和ip

--network=none/host/docker1  指定使用的网络   --ip指定容器的ip

docker network inspect <网络ID>查看bridge网络的信息

docker network connect  <网络名> --ip <容器名> 给容器增加一块网卡

docker network rm <网络ID>删除网络

centos7下安装docker(12.5容器在单个host上的网络总结)的更多相关文章

  1. centos7下安装docker(19容器架构)

    What,Why,How What:什么是容器? 说起容器大家想到的是什么?      集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...

  2. centos7下安装docker(11容器操作总结)

    这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...

  3. centos7下安装docker(10容器底层--cgroup和namespace)

    cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...

  4. centos7下安装docker(9容器对资源的使用限制-内存)

                  一个docker Host上面会运行若干容器,每个容器都需要CPU,内存和IO资源.容器提供了控制分配多少CPU,内存给每个容器的机制,避免摸个容器因占用太多资源而影响其他 ...

  5. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  6. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  7. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  8. centos7下安装docker(15.1跨主机网络)

    之前学习了单个host上的网络,我们知道单个host上的网络有:none,host,bridge和joined,他们解决了单个host上面的容器通信的问题:接下来我们讨论跨主机间容器通信的方案 跨主机 ...

  9. centos7下安装docker(15.5容器跨主机网络--flanneld)

    flannel是由CoreOS研究的一种覆盖网络(overlay network)网络工具,目的是帮助每一个host主机有一个完整的子网: 功能是:让集群中不同节点的主机创建的容器都有一个唯一的虚拟I ...

随机推荐

  1. 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析

    前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...

  2. Java和Python分别实现直接选择排序

    1.基本思想 将指定排序位置与其他数组元素分别对比,如果满足条件就进行交换.个人理解其实就是每趟循环从数组里选一个最大的值(最小的值)放到数组最后(最前). 2.算法实现 这里以每趟循环从数组中选择一 ...

  3. 在EF中执行SQL语句(转载)

    在EF中执行SQL语句   你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除 ...

  4. 【Java基础】13、抽象方法不能是static或native或synchroniz 原因及误解

    在网上看到过这么一篇文章,是关于抽象方法不能是static或native或synchroniz 的原因.其中提到了这些关键字的意义以及与 abstract 关键字的冲突,大体内容如下: 1.abstr ...

  5. 微信小程序下拉框之二维数组或对象

    在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的值.像我项目中,需要获取到的是它对应的Id,那么我们如何通过它的这个下标值返回你想要的值呢? 通过picker返回的索引值,去获取匹配你想获 ...

  6. ajax请求完之前的loading加载

    很多时候我们需要引入框架来开发项目,这时我们可能会遇到页面还没加载完源码出来了的问题,给用户一种不好的视觉体验,这是便需要loading加载了,来完善用户体验! /*loading.js*/ // 加 ...

  7. 如何判断一个 APP页面是否是H5页面

    1.无网络断开网络,显示404或则错误页面的是H5 2.页面布局a.在手机设置.开发者选项中开启显示布局边界功能:b.进入应用查看布局边界:c.原生应用可以看到各个控件的布局边界,H5只有整个页面的一 ...

  8. ComponetOne 2014 v3版本正式发布

    2014年11月18日---ComponentOne Studio Enterprise 2014 v3版全球正式发布.ComponentOne Studio Enterprise是世界知名的Micr ...

  9. 怎样制作爽心的 dashboard ?

    在目前的大数据趋势中,数据的大屏可视化成为大家所推崇的一种互动展示模式.如果我们能够早一些了解和掌握这方面的技术,相信对我们的未来将会非常有帮助! 我们知道,通过报表工具实现大屏展示可以通过单张报表. ...

  10. Loading加载页面

    一般页面有四种情况 加载中 :就是滚动页面,后台获取加载的数据,每个页面的数据不同所以就让子类来实现,直接抽象abstract了. 加载失败 :一般都需要点击后重新加载 空页面 :也需要点击后重新加载 ...