Docker Container容器技术

什么是容器?为什么要用容器或容器有什么好处或容器能解决什么问题?
因为docker是最火的容器技术方案,所以多少依照docker来理解容器。(当然还有coreos的rocket)
个人理解,慎重参考

一句话回答什么是容器?

容器是操作系统层面上轻量级的虚拟机,通过容器包裹我们的APP应用。docker的出现让容器变为标准化的单位,所以容器进行打包成镜像,可靠的从一个计算机环境到另一个计算机环境,加上轻量级可以弹性扩展服务。同一机器下的多个容器,共享操作系统内核,共享部分是只读的,对于写,每个容器通过自己的mount.
关键字:轻量级,标准化,打包镜像,可靠迁移,弹性扩展。

为什么要有容器?

其实一句话回答总结了容器得特性,也就是为什么需要容器。

  1. 首先,虚拟化是高效利用计算资源的主要方式,但是hypervisor技术虚拟化平台,来提供来宾操作系统的方式,过于重量级,启动慢,非应用必须的操作系统服务也在运行,资源利用率也不是很高。所以有了基于操作系统上,将应用运行环境的虚拟化技术,够轻量级,利用效率也高。
  2. 然后是,容器概念的提出,但是是docker让容器标准化,让应用运行环境的虚拟化变得标准,统一容器标准,让应用服务更好的可以迁移,打包,复制,快速运行扩展服务。

容器技术的影响

  1. 影响了开发,测试,运维的devops工作流程,让开发测试运维不用再去关心三者的应用运行环境的不一致。build once, run anywhere.
  2. 容器打包成镜像,是另一种分发发布软件发行版的方式,然很多软件提供商多了一种发布途径。
  3. 可基于云平台运行,让云计算商家快速售卖搭建saas服务。
  4. 轻量级速度快高弹性,在分布式和微服务框架下,弹性的根据各种情况,扩展,容灾,为微服务框架提供了一定的基础。
  5. 衍生了对容器集群的管理工具或平台,如k8s, swam等新兴技术,弹性管理容器集群。
  6. CI/CD,持续集成和持续部署,开发完成后,提交代码,从而进入自动化流程,自动测试-自动构建镜像-自动推送docker镜像库。后续还可以自动化运行到业务测试环境中,进一步测试。这一系列自动化都是容器技术的标准化后才能更加简洁明确的。这样的持续集成和持续部署应该说大大提升了交付速度,团队人员不用拷贝代码,修改配置,替换文件等低效率工作。同时也为测试提供了更多的时间,反而促进了软件的可靠性。

容器技术浅谈原理,怎么实现的?为什么能够这样轻量级标准化

  1. 基于操作系统,所以还是要依赖操作系统的,共享操作系统。
  2. 容器引擎(也是容器管理器)
  3. 利用namespaces, cgourps, unionfs 等。
  4. namespaces 起到隔离作用。
  5. cgourps 负责容器所需资源管理控制。比如进程组使用CPU/MEM的限制,进程组优先级控制,进程组wait/sleep/run的控制。

难点

  1. 容器的网络环境问题:既然容器标准化后,将我们的应用放在容器中运行,我们知道,应用是提供服务的,而服务的访问大多或者肯定是通过网络来提供,即使是本地应用也要提供网络管理接口服务,所以说,容器还要提供以太网卡以太网络(主要是以太网),网卡可以是虚拟网卡,但是网络呢?由于容器时运行在操作系统上,所以容器的网络肯定和宿主机宿主操作系统有必然关系。容器接入的网络时怎么样的呢?容器标准化,那么在通过镜像,创建容器时,是不是要额外的指定网络相关的参数才行,毕竟镜像时静态的,移植到不同宿主机,宿主机能提供的网络环境肯定是不一致的,所以不一致的东西肯定是不能打包到镜像中,只能在镜像创建容器时指定。容器网络的提供应该就是docker engine提供,docker-engine通过镜像创建容器时应该会根据参数进行相应的网络构建(虚拟网络,涉及相关虚拟网络设备)。
  2. 存储文件系统问题(volume卷):容器的文件系统,容器有自己的文件系统。mount列表。

容器的标准

主要是两大标准规范:

  1. 容器运行时期的标准:a)creating; b)created; c)running; d) stopped
  2. 容器打包的镜像标准:a)文件系统:以layer保存的文件系统,每个layer保存和上层之间变化的部分,layer应该保存哪些文件,怎么表示增加、删除、修改的文件;b) config文件:保存文件系统的层级信息(每层的hash值,以及历史信息,以及容器运行时需要的一些信息(如环境变量、工作目录、命令参数、mount列表), 指定了镜像在某个特殊平台的差异化配置。比较接近我们使用docker inspect看到的内容; c) manifest文件: 镜像的config文件的所以,有哪些layer,额外的annotation信息, manifest文件中保存了很多和当前平台有关的信息; d) index文件:可选的文件,指向不同平台的manifest文件,这个文件能保证一个镜像可以跨平台使用,每个平台拥有不同的manifest文件,使用index作为索引。

花边

  1. 容器技术缩写就是LXC,Linux Container。

Docker 0x01:Docker Container容器技术的更多相关文章

  1. Docker 容器技术

    前言: 之前感觉Docker是一种小虚拟机,docker和KVM虚拟机之间有什么区别.联系.可以应用在什么样的生产环境? 一.Docker是什么以及和KVM的区别 1.docker概念? Docker ...

  2. 容器技术----------->Docker

    1. 虚拟化 1)什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种 实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体 ...

  3. 01. DOCKER - 容器技术

    什么是容器 对于容器这个词,大部分人第一时间想到的肯定是生活中常见瓶瓶罐罐,用来装水的东西.它给人的第一感觉就是能 "装". 而在 IT 领域,Container 就被直译为容器, ...

  4. Docker 0x06: Docker Volume卷

    目录 Docker Volume卷 一句话什么是docker volume? docker volume特性 docker 挂载卷 docker 多容器间共享数据券 删除,查看数据卷 备份还原数据卷 ...

  5. Docker 组件如何协作?- 每天5分钟玩转容器技术(8)

    还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的. 容器启动过程如下: Docker 客户端执行 docker run 命令. Docker daemon 发现本 ...

  6. 如何运行容器?- 每天5分钟玩转 Docker 容器技术(22)

    上一章我们学习了如何构建 Docker 镜像,并通过镜像运行容器.本章将深入讨论容器:学习容器的各种操作,容器各种状态之间如何转换,以及实现容器的底层技术. 运行容器 docker run 是启动容器 ...

  7. volume 生命周期管理 - 每天5分钟玩转 Docker 容器技术(44)

    Data Volume 中存放的是重要的应用数据,如何管理 volume 对应用至关重要.前面我们主要关注的是 volume 的创建.共享和使用,本节将讨论如何备份.恢复.迁移和销毁 volume. ...

  8. Docker 最常用的监控方案 - 每天5分钟玩转 Docker 容器技术(78)

    当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要. 在本章中,我们将讨论几个目前比较常用的容器监控工具和方案,为大家构建自己的监控系统提供参考. 首先我们会讨 ...

  9. Weave Scope 容器地图 - 每天5分钟玩转 Docker 容器技术(80)

    Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器.千言万语不及一张图,先感受一下. 下面开始实践 Weave Scope. 安装 执行如 ...

随机推荐

  1. ES6-Generator基础用法

    Generator简介: 生成器,本身是函数,执行后返回迭代对象,函数内部要配合yield使用Generator函数会分段执行,遇到yield暂停. 使用Generator注意点:function 和 ...

  2. SUSE12.2 添加ISO为源

    152 2019-05-16 16:40:13 mkdir /mnt/DVD1 153 2019-05-16 16:40:55 mount -o loop /root/SLE-12-SP2-Serve ...

  3. Log4j Threshold指定输出等级&&Append指定是否追加内容

    Threshold指定输出等级 有时候我们需要把一些报错ERROR日志单独存到指定文件 ,这时候,Threshold属性就派上用场了: Threshold属性可以指定日志level Log4j根据日志 ...

  4. centos 6.9 安装docker

    1.查看系统具体版本 yum install lsb -y lsb_release -a 2.安装yum源 yum -y install http://dl.fedoraproject.org/pub ...

  5. Excel 如何统计非空非零单元格的个数

    使用 Excel 统计非空非零单元格的个数: ——使用函数 :=COUNTIFS($B$2:$B$194440,"<>",$B$2:$B$194440,"&l ...

  6. Maven 教程(4)— 新建Maven项目

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79542203 我们以简单的helloworld来作为入门的实例,有些人说掌握了h ...

  7. CountDownLatch源码

    public class CountDownLatchExample1 { public static void main(String[] args) throws Exception { Exec ...

  8. @AspectJ注解的value属性

    @Component @Scope("prototype") @Aspect(value="perthis(execution(* com.helius.service. ...

  9. Java选择结构和循环结构

    1.选择结构 ①.ifif(){ } if(){}else{} if(){}else if(){}else if(){}else{} ②.switch switch (表达式) { case 常量 1 ...

  10. 怎么用命令行把apk安装到移动设备上?

    1.移动设备通过USB连接电脑 2.执行命令adb install [apk文件的路径]