【Docker】容器技术黑马Docker(一)——了解容器技术,了解Docker

来源:互联网 发布:解锁姿势体验知乎 编辑:程序博客网 时间:2024/05/19 15:39

一、前言

      说到容器,小编最先接触的容器还是tomcat这些web容器,感觉容器就是把应用程序装进去,应用程序在容器中运行,我们可以通过访问容器暴露的端口来访问容器中的应用程序。

      再说到容器技术,这个就厉害了。 这里小编就重点介绍一下容器技术的发展以及容器技术的黑马Docker。

二、容器技术发展

这里写图片描述

      小编觉得这张图非常棒,涵盖了容器技术的演变。

      容器技术最早可以追溯到1979年UNIX系统中的chroot,最初是为了方便切换root目录,为每个进程提供了文件系统资源的隔离,这也是OS虚拟化思想的起源。

      2000年,BSD吸收并改进了chroot技术,发布了FreeBSD Jails。FreeBSD Jails除文件系统隔离,还添加了用户和网络资源等的隔离,每个Jail还能分配一个独立IP,进行一些相对独立的软件安装和配置。

      2001年,Linux发布了Linux Vserver,Linux VServer依旧是延续了Jails的思想,在一个操作系统上隔离文件系统、CPU时间、网络地址和内存等资源,每一个分区都被称为一个 security context,内部的虚拟化系统被称为VPS。

      2004年原SUN公司发布了Solaris Containers,Solaris Containers作为Solaris 10中的特性发布的,包含了系统资源控制和zones提供的二进制隔离,Zones 作为在操作系统实例内一个完全隔离的虚拟服务器存在。

      2005 年SWsoft公司发布了OpenVZ,OpenVZ和Solaris Containers非常类似,通过打了补丁的 Linux 内核来提供虚拟化、隔离、资源管理和检查点。OpenVZ 标志着内核级别的虚拟化真正成为主流,之后不断有相关的技术被加入内核。

      2006 年Google 发布了 Process Containers,Process Container 记录和隔离每个进程的资源使用(包括CPU、内存、硬盘I/O、网络等),后改名为cgroups(Control Groups),并在2007年被加入Linux内核2.6.24版本中。

      2008年出现了第一个比较完善的LXC容器技术,基于已经被加入内核的cgroups和Linux namespaces 实现。不需要打补丁,LXC就能运行在任意vanila内核的Linux上。

      2011年,CloudFoundry发布了Warden,和LXC不同,Warden可以工作在任何操作系统上,作为守护进程运行,还提供了管理容器的API。

      2013年Google公司建立了开源的容器技术栈lmctfy,Google开启这个项目是为了通过容器实现高性能,高资源利用率,同时接近零开销的虚拟化技术。目前 Kubernetes 中的监控工具 cAdvisor就起源于lmctfy项目,2015年Google将lmctfy的核心技术贡献给了 libcontainer。

      2013年Docker诞生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)内部的项目,和Warden类似,Docker最初也用了LXC,后来才自己写了 libcontainer 替换了 LXC。和其它容器技术不同的是,Docker 围绕容器构建了一套完整的生态,包括容器镜像标准、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等;

      2014年CoreOS创建了rkt,为了改进Docker在安全方面的缺陷,重写的一个容器引擎,相关容器工具产品包括:服务发现工具etcd和网络工具flannel等。

      2016年微软公司发布基于Windows 的容器技术Hyper-V Container,Hyper-V Container原理和Linux下的容器技术类似,可以保证在某个容器里运行的进程与外界是隔离的,兼顾虚拟机的安全性和容器的轻量级。

三、说说Docker

      近几年,做软件开发的,肯定听过Docker这种技术。Docker 在软件部署的时候是越来越方便了。

Docker是一个能够把开发的应用程序部署到容器的开源引擎。

3.1 Docker的应用场景

      为什么要关注Docker或者容器技术呢?容器可以提供隔离性,可以为各种测试提供一个良好的沙盒环境。并且,容器本身就是具有“标准性”的特征,非常适合为服务创建构建块。

  • 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以构建运行并分享Docker容器。容器可以在开发环境中构建,然后轻松的提交到测试环境,最终 进入生产环境。

  • 能够让独立服务或者应用程序在不同的环境中,得到相同的运行结果。

  • 用Docker创建隔离的环境来进行测试。eg :JenkinsCI

  • Docker可以让开发者在本机上构建一个复杂的程序或者架构来进行测试,而不是一开始就在生产环境部署、测试。

  • 构建一个多用户的平台及服务基础设施。

  • 为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用于技术教学,eg:unix shell 的使用。

  • 提供软件及服务应用程序

  • 高性能、超大规模的宿主机部署。

3.2 Docker 组件

  • 客户端和服务端

  • 镜像

  • Registry

  • 容器

3.2.1 客户端和服务端

      Docker是一个(C/S)架构的程序。Docker客户端只需向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有的工作并返回结果。Docker守护进程有时也称为Docker引擎。

这里写图片描述

3.2.2 镜像

      镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中“构建”部分。镜像是基于联合文件系统的一种层式的结构,由于一系列指令一步一步构建出来。

这里写图片描述

3.2.3 容器

      我们刚刚提到,容器就是基于镜像启动起来的,容器中可以运行一个或者多个进程。镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段 。容器就是在镜像的基础上,加入了可写层,进行执行环境。

这里写图片描述

3.2.4 Registry

      仓库,用于保存镜像。仓库分为两种共有和私有。Docker公司运营的公共仓库叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自助机的镜像。

      用户也可以在Docker Hub上保存自己的私有镜像,甚至可以架设自己私有的仓库。

3.2.5 综上

这里写图片描述

四、小结

      容器技术越来越流行,开发、测试、上线基本是操作一体,使用方便。这个技术还是了解一些比较好。

      下一篇,向大家介绍《Docker入门》

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 七日杀骨折了怎么办 14岁青少年脱发怎么办 大韩庄膏药干了怎么办 28岁有前列腺怎么办 卵泡自己萎缩了怎么办 流产回娘家了该怎么办 不孕离婚我该怎么办 孕酮低无法着床怎么办 试管一个月出血怎么办 取卵后例假量少怎么办 移植着床后高潮怎么办 小儿牙龈有脓包怎么办 差额选掉了怎么办 房子延迟交房怎么办 脸褪皮发红还痒怎么办 脸干脱皮痒怎么办 小孩身上长荨麻疹怎么办 小孩发烧全身烫怎么办 济南到聊城晚上怎么办 移民后国内存款怎么办 论文题目重了怎么办 月子里上火严重怎么办 高原干燥鼻子干怎么办 2020年污染企业怎么办 再生橡胶企业污染怎么办 闪电借款没额度怎么办 黄金项链拉长了怎么办 借款超过2年怎么办 网吧没带身份证怎么办 异地身份证没磁怎么办 指纹浅怎么办怎么保护 打卡指纹不清晰怎么办 驾考指纹录不上怎么办 指纹读不出来怎么办 中国银行卡吞了怎么办 存钱钱卡住了怎么办 办理身份证指纹录不上怎么办 手指没有指纹了怎么办 签了户口身份证怎么办 生了三胎户口怎么办 双户口注销学历怎么办