docker (1) 附加 基础知识必知(重要)

一、基础知识:

1.Docker runtime

  runtime是容器真正运行的地方。借助JAVA中JVM的概念来理解。

  lxc、runc、rkt是目前主流的三种容器runtime。

  •   lxc是Linux上老牌的容器runtime。Docker最初也是用lxc作为runtime的。
  •   runc是Docker自己开发的runtime。目前Docker的默认runtime。符合oci规范。
  •   rkt是CoreOS开发的容器runtime。符合oci规范,因而能够运行Docker的容器。

2.容器管理工具

  lxd是lxc对应的管理工具。

  runc的管理工具是Docker engine,包括后台deamon和cli两部分,我们通常提到的Docker一般就是指docker engine。

  rkt的管理工具是rkt cli。

3.容器定义

  docker image是Docker容器的模板,runtime根据docker image来创建容器。

  dockerfile是包含若干个命令的文本文件,可以通过该文件创建出docker image。

  定义过程:dockerfile--->docker image--->container

4.容器仓库(Registry)

  Registry分为共有和私有两种:

  Docker Registry  :私有仓库

  Docker Hub:共有仓库(私有收费)

  Quay.io :另一个共有仓库

5.容器OS

  除了在传统的Linux、MACOS、Windows上运行容器,目前也存在一些容器OS,例如CoreOS、Atomic、Ubuntu Core等。

  比如传统操作系统,容器操作系统体积更小,启动更快。

6.容器平台

  1.容器编排引擎:docker swarm、kubernetes、mesos+marathon等。

  2.容器管理平台:Rancher、ContainerShip等。

  3.基于容器的PaaS:Deis、Flynn、Dokku等。

7.容器网络

  docker network

新型容器网络指跨主机的网络,分为两大类——隧道方案和路由方案。 隧道方案的典型代表包括:

1)Weave:UDP广播,本机建立新的BR,通过PCAP互通。

2)Open vSwitch(OVS):基于VxLAN和GRE协议。

3)Flannel:UDP广播、VxLan。

4)Overlay: docker 官方开发,v1.9后推出

隧道方案对底层的网络没有过高要求,只要是三层可达,就能构建出一个基于隧道的容器网络, 缺点就是节点规模的增长复杂度会提升,而且出了网络问题维护跟踪难度高

 

路由方案的典型代表包括Calico和Macvlan。

1)Calico:基于BGP协议的路由方案,支持很细致的ACL控制。

2)Macvlan:从逻辑和Kernel层来看隔离性和性能最优的方案,基于二层隔离,所以需要二层路由器支持,大多数云服务商不支持,所以混合云上比较难以实现。

路由技术从三层或者两层实现跨主机容器互通,没有NAT,效率比较高, 缺点就是和目前的网络能够融合在一起,每一个容器都可以像虚拟机一样分配一个业务的IP。如果几万新的容器IP冲击到路由表里,导致下层的物理设备没办法承受;而且每一个容器都分配一个业务IP,业务IP消耗会很快。

新型网络: 服务网格

 自动化SDN和Service Mesh 自动化的三个主要方面: 可编程性、配置和安装

 可编程性:     

许多SDN就像OpenContrail一样,提供了一个附带API的逻辑上的集中控制层,Istio和 Linkerd这么处理的,他们遵循类似于SDN架构模式,具备中心控制层和分布式的转发层代理

lstio有集中控制层API

Linkerd通过它的Namerd组件提供一个API来适应复杂的分布式环境

OpenContrail 的RESTful API与Istio的静态原始API功能相比,可以更好地实现扩展(built-out)和测试

 配置:     

Service mesh与SDN更大的区别在于如何访问功能,引入了YAML来进行配置,并通过CLI将配置进行交付,网络接口而言,service mesh像其他许多SDN一样,确实提供了这些功能

OpenStack云计算管理平台,OpenContrail可以用基于YAML格式的 Heat模板配置

容器的K8s和OpenShift容器集群关系不大。在K8s容器集群管理系统中,OpenContrail SDN配置被注释为K8s对象。它做了刻意的简化,所以只展示了OpenContrail功能的一小部分。通过K8s TPR、ConfigMaps或通过一些OpenContrail本身的注释器能完成哪些工作

安装:

Istio是最新发布的Service mesh,但它已经有了Helm charts,可以通过Kubernetes容器集群管理系统进行快速部署,Istio则意味着把它的Envoy代理作为一个sidecar捆绑到每个Kubernetes Pod中,通过kube-inject命令来实现

OpenContrail与Istio和Linkerd有一个共同点,它们都是基于容器进行部署的,但不同的是,每个节点上的OpenContrail转发代理都是一个用户空间组件和内核模块(基于DPDK或SmartNIC)被容器化了

内核模块明显地简化性能和与网络堆栈的集成,但是它所使用的资源不是基于容器的,因此没有资源方面的限制,所以资源管理与用户空间sidecar进程是不同的,这与使用kube-proxy或任何基于IP tables的网络连接都是一样的,与OpenContrail的虚拟路由器(vRouter)作用对等。

关于Service mesh的学习资源

Istio博客:https://istio.io/blog/

Buoyant博客:https://blog.buoyant.io/

Istio和 Kubernetes演示视频(来自Lachie):https://www.youtube.com/watch?v=ePwd5bK2Cuo&list=PLbj_Bz58yLCw09JYfG2xbFMi5-jN89LfB

Istio Service Mesh 播客: https://softwareengineeringdaily.com/2017/06/27/istio-service-mesh-with-varun-talwar-and-louis-ryan/ Linkerd Service Mesh播客: https://softwareengineeringdaily.com/2017/06/26/service-mesh-with-william-morgan/

关于Linkerd 的Scaling Twitter 播客: https://softwareengineeringdaily.com/2016/06/22/scaling-twitter-buoyant-ios-william-morgan/ 关于Envoy 的服务代理(Service Proxying)播客: https://softwareengineeringdaily.com/2017/02/14/service-proxying-with-matt-klein/

Envoy 和 Linkerd间的对比: https://lyft.github.io/envoy/docs/intro/comparison.html#id7

8.服务发现

  etcd

  consul

  zookeeper

9.监控

  docker ps/top/stats

  docker stats API

  sysdig

  cAdvisor/Heapster

  Weave Scope

10.数据管理、日志管理和安全性

  数据管理:REX-Ray

  日志管理:docker logs、logspout

  安全性:OpenSCAP

  

发布了62 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cojn52/article/details/104388411