本节开始,会学习docker的几种原生网络,以及如何创建自定义网络。然后探究容器之间如何通信,以及容器与外界如何交互
 
docker网络从覆盖范围可以分为单个host上的容器网络和跨多个host的网络,本章终点学习前一种。对于更复杂的多host网络,将在后面的进阶部分学习。
 
docker安装时会自动在host上创建三个网络,我们可以用docker network ls 命令查看
 
root@docker-lab:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b41bf72cd691        bridge              bridge              local
e5cb8d603efd        host                host                local
f9dc6032baba        none                null                local
 
none网络
 
none网络就是什么网络都没有,挂载这个网络下的容器除了lo以外,没有其他网卡。容器创建时,可以通过 --network=none 指定容器使用none网络。
 
root@docker-lab:~# docker run -it --network=none busybox
/ # ifconfig -a
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
/ #
 
一个封闭的网络有什么用呢,封闭即隔离,一些对安全性要求较高并且不需要联网的应用可以使用none网络,比如专门用来生成随机密码的容器。
 
host网络
 
连接到host网络的容器共享docker host的网络栈,容器的网络配置与docker host完全一样。可以通过 --network=host 指定容器使用host网络
 
root@docker-lab:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
    link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
root@docker-lab:~# docker run -it --network=host busybox
/ # ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 52:54:00:02:7e:68 brd ff:ff:ff:ff:ff:ff
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 52:54:01:02:27:95 brd ff:ff:ff:ff:ff:ff
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue
    link/ether 02:42:0e:6c:b4:04 brd ff:ff:ff:ff:ff:ff
/ #
/ # hostname
docker-lab
 
 
可以看到host网络的容器,使用的网络以及hostname都和docker host一样
 
直接使用host网络最大的好处就是性能,如果容器对网络传输效率要求比较高,则可以选择host网络。
 
缺点是灵活性差,容器和docker host公用一套端口,需要解决端口冲突的问题。
 
host网络的另一个用途是让容器可以直接配置docker host网络,比如某些跨docker host的网络解决方案,其本身也是以容器方式运行,这些方案需要对网络进行配置,比如管理iptables,后面的章节会做详细介绍
 

031、none和host网络的适用场景(2019-02-18 周一)的更多相关文章

  1. 第 5 章 网络 - 031 - none和host网络的适用场景

    none和host网络的适用场景 Docker 安装时会自动在 host 上创建三个网络,用 docker network ls 命令查看: root@ubuntu:~# docker network ...

  2. none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)

    本章开始讨论 Docker 网络. 我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络.然后探讨容器之间如何通信,以及容器与外界如何交互. Docker 网络从覆盖范围可分为单个 ...

  3. none 和 host 网络的适用场景

    我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络.然后探讨容器之间如何通信,以及容器与外界如何交互. Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 h ...

  4. Docker网络——单host网络

    前言 前面总结了Docker基础以及Docker存储相关知识,今天来总结一下Docker单主机网络的相关知识.毋庸置疑,网络绝对是任何系统的核心,他在Docker中也占有重要的作用.同样本文基于Clo ...

  5. docker从零开始网络(四 ) host网络

    使用主机网络 如果host对容器使用网络驱动程序,则该容器的网络堆栈不会与Docker主机隔离.例如,如果您运行绑定到端口80 host的容器并使用网络,则容器的应用程序将在主机IP地址的端口80上可 ...

  6. Docker-None & Host 网络

    本节介绍None&Host网络. 1.前言 点击此处回到docker系列文章目录 前面我们介绍了bridge network,本小节继续介绍none和host.这两个比较简单,也不太常用.安装 ...

  7. clumsy模拟客户端网络差的场景的使用

    1.为什么需要模拟客户端网络差的情况? a. 研发环境的网络配置一般较高,网络响应快,不容易出现网络故障,但是客户使用的网络环境千差万别,不排除使用过程中遇到网络故障的情况. b.程序有些时候是多线程 ...

  8. 2019ICPC南昌网络赛C Hello 2019

    题意:给出一个字符串,每次询问一个区间[l,r],求使得这个区间含有9102但不含有8102最少要删掉几个字符 首先我们考虑将串反转,这样就变成了含有2019但不含有2018的问题了 我们构建一个状态 ...

  9. 科来网络通讯协议图2019版(OSI七层模型)

    来源:http://www.colasoft.com.cn/download/protocols_map.php 自己把它转成了图片,好做查看:https://www.lanzous.com/ib5h ...

随机推荐

  1. Atcoder | AT2665 【Moderate Differences】

    又是一道思路特别清奇的题qwq...(瞪了一上午才发现O(1)的结论...差点还想用O(n)解决) 问题可以转化为是否能够由\(f_{1}=a\)通过\(\pm x \in[c,d]\)得到\(f_{ ...

  2. centos7安装sonarqube6.7 代码质量管理平台

    应用介绍:SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量通过插件形式:    可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groov ...

  3. Codeforces Round #487 (Div. 2) C - A Mist of Florescence

    C - A Mist of Florescence 把50*50的矩形拆成4块 #include<bits/stdc++.h> using namespace std; ],b[]; ][ ...

  4. A1121. Damn Single

    "Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are suppo ...

  5. 【洛谷P1403】约数研究

    题目大意:求\[\sum\limits_{i=1}^n\sum\limits_{d|i}1\] 题解:交换求和顺序即可. \[\sum\limits_{i=1}^n\sum\limits_{d|i}1 ...

  6. JavaScript深入之从原型到原型链

    构造函数创建对象 我们先使用构造函数创建一个对象: function Person(){} var person = new Person(); person.name = 'Kevin'; cons ...

  7. gradle的安装配置成功标志

    gradle主要位于AndroidStudio中 看我的目录 在环境变量里添加用户变量 GRADLE_HOME 然后在环境变量 path 中增加 %GRADLE_HOME%\bin;,如图所示 测试配 ...

  8. Day22 常用模块01

    1. collections模块collections模块主要封装了⼀些关于集合类的相关操作. 比如, 我们学过的Iterable,Iterator等等. 除了这些以外, collections还提供 ...

  9. 整合shiro出现【Correct the classpath of your application so that it contains a single, compatible version of org.quartz.Scheduler】

    跑的时候出现错误: Description: An attempt was made to call the method org.quartz.Scheduler.getListenerManage ...

  10. ES6优缺点

    看了一篇ES6语法示例,觉得还可以 here ES6是新一版的标准,对语言有扩展,添加了新的属性与方法.这一标准虽然现在还要用babel来做浏览器支持(将ES6编译成ES5才能被浏览器支持),但是未来 ...