2019独角兽企业重金招聘Python工程师标准>>>

Docker的前世今生

Docker是基于Go语言实现的云开源项目,目前归于Apache基金会并遵循Apache 2.0协议。诞生于2013年初,前身公司为dotCloud,docker开源后得到受到社会广泛的关注,docker的生态圈体系也逐渐成熟,这家公司也改名为Docker Inc,专注于Docker相关技术和产品开发。

Docker最大的目标是:“Build, Ship and Run Any App, Anywhere!”。你只需要通过对应用组件的一次的封装,就能在任意地点构建和运行你的应用。无论是一个完整的应用,或者是某些微服务,甚至到一个完整的操作系统都能成为docker的应用组件。Docker提供一个高效、敏捷和轻量的容器方案,能动态适应各种规模的系统部署需求。

Docker整个生命周期包含三部分:镜像(Image),容器(Container),仓库(Repository)。镜像和容器的关系就像程序和进程,镜像是容器运行的一大前提,而容器则是镜像的一个运行实例。仓库则是镜像的管理中心,默认的镜像仓库为Docker Hub。

Docker运行容器前需要检查本地是否存在对应的镜像,如果不存在,会尝试从默认的镜像仓库下载。镜像实例化之后运行着一个完整的容器,容器除了镜像本身的内容外,还提供额外的可写文件层以及相对独立的运行环境(可能是一些应用或者服务,也可能是完整的操作系统)。

作为一个C/S模型的项目,Docker通过Docker Host进行镜像、容器、守护进程、分区等的管理,同时在Docker Client进行镜像的拉取,容器的构建等操作,通常情况下Host和Client可能会在同一台机器上。

Docker开源代码地址:https://github.com/docker/docker

Docker得天独厚的优势

新的部署方式

假如当前有这么一个场景:“由于业务增长,公司的一个网站项目需要迁移到新的服务器”。按照传统方案,我们很可能需要作一些重复性的工作。首先需要在新的服务器上安装对应的运行环境以及对应的依赖,如LAMP(Linux+Apache+Mysql+PHP),创建对应的用户或组并进行文件权限的管理,耗费大量的精力后,还需要对该环境进行测试,最后才能部署上线。试想一下,如果这样的需求多少十几倍,这些工作需要重复的执行。

也许你会说可以通过虚拟化的技术将整个环境打包成镜像再进行部署,加入新的服务器本身也是一台虚拟化的机器,再加上一层xen(或者其他虚拟机)去部署显然显得多余了。

而Docker提供一种极为简便的操作方式,通过容器来进行应用打包,我们可以通过封装成镜像或是编写Dockerfile等方式来进行打包,这意味着在新的服务器上只需要启动所需要的容器即可。一来节省了大量的时间投入,而来降低了部署过程出现问题带来的隐患。

运维策略的革新

1. 极速交付和部署

使用docker,开发人员可以使用镜像快速构建一套标准的开发环境。之后的测试和上线环节完全可以复用这套镜像将应用部署到测试环境或生产环境等任意地方。Docker可以快速创建、删除容器,并保留了每一个步骤的配置和操作过程,降低开发、测试、部署的时间的同时让环境部署更容易被理解。通过简单的配置文件修改,就能轻松完成一次运行环境的迭代,所有操作都可以以增量的形式进行分发和更新,从而实现自动化和高效的容器管理。

2. 性能损耗低

事实上docker是内核级别的虚拟化,不需要额外的虚拟化管理程序,因此开启docker对性能的损耗几乎忽略不计。

3. 轻便易迁移拓展

Docker几乎支持任意平台运行,无论是物理机还是虚拟化的主机,甚至个人电脑都能兼容运行docker,这种兼容性可以让应用更方便切换运行平台。

4. 规范化的标准

Docker背后的标准化容器执行引擎 - runC。runC是由docker贡献后续完善的一个开放的工业化标准,其主要内容:

  • 操作标准化:容器的标准化操作包括使用标准容器感觉创建、启动、停止容器,使用标准文件系统工具复制和创建容器快照,使用标准化网络工具进行下载和上传。
  • 内容无关:内容无关指不管针对的具体容器内容是什么,容器标准操作执行后都能产生同样的效果。如容器可以用同样的方式上传、启动,不管是php应用还是mysql数据库服务。
  • 基础设施无关:无论是个人的笔记本电脑还是AWS S3,亦或是Openstack,或者其他基础设施,都应该对支持容器的各项操作。
  • 为自动化量身定制:制定容器统一标准,是的操作内容无关化、平台无关化的根本目的之一,就是为了可以使容器操作全平台自动化。
  • 工业级交付:制定容器标准一大目标,就是使软件分发可以达到工业级交付成为现实。

5. 集群管理

Kubernetes是Google开源的Docker容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。

关于Docker和虚拟机的比较,请参考:http://www.linuxprobe.com/docker-and-vm.html

关于Docker的标准,请参考:http://www.open-open.com/lib/view/open1444481959869.html

文章小节

全文主要对docker进行概念性的介绍,想必读到这里,docker再也不会是一个陌生的技术。无论是在针对应用的自动化运维还是PAAS的管理策略,docker都能提供一套优秀的解决方案,docker在领域内倍受青睐,让运维的工作有了前所未有的优质体验。如果你也被docker的魅力深深折服的话,欢迎加入到docker的学习行列一同探索。

免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.linuxprobe.com/

转载于:https://my.oschina.net/linuxprobe/blog/687293

Docker大行其道—初识相关推荐

  1. Docker大行其道—镜像

    导读 作为Docker三大核心概念之一,Docker镜像(Docker Image)是一个面向Docker引擎的只读模板,包含文件系统.实际上每个Docker镜像包含一个独立的运行环境,如一个镜像包含 ...

  2. 【云原生 • Docker】Docker常用命令总结(值得收藏)

    上一篇文章大家应该了解和搭建了Docker环境,Docker 是一个开源的应用容器引擎. 直通车: [云原生 • Docker]初识Docker和Docker的坏境搭建(保姆级教学) 作为一名开发或者 ...

  3. Docker 安装 命令 数据卷 应用部署 网络优化 Dockerfile 服务编排Compose 私有仓库

    Docker 1. 初识docker 1.1 Docker是什么 了解Docker的前生LXC LXC与docker的关系 Docker 的特点 1.2 为什么使用Docker Docker的优势 缺 ...

  4. centos桌面系统怎么退回终端系统_【社群话题分享】Linux 各大发行版你怎么选?...

    每周三下午的话题活动是又拍云技术社群的优良传统- 大家一起来看看这周都聊了些啥吧- 看之前先公布一下上周参与活动获奖的同学吧! 上周获奖名单 优秀回答:Heart Pary 一等奖-又拍云定制雨伞:y ...

  5. Java架构师成长之路

    目录导航 前言 一.源码分析专题 1.1 设计模式详解 1.2 Mybatis源码分析 1.3 Spring5源码分析 二.分布式架构专题 2.1 漫谈分布式架构 2.2 分布式架构的基础 2.3 分 ...

  6. Docker 学习应用篇之一: 初识Docker

    Docker 自从2013年以来就非常的火热,无论是从github上的代码活跃度,还是Redhat在RHE6.5中集成对Docker的支持,等等.第一次接触Docker,还是老师给我们介绍的. 1.初 ...

  7. 初识Docker:(5)Docker自定义镜像

    初识Docker:(5)Docker自定义镜像 镜像结构 Dockerfile语法 什么是Dockerfile 构建Java项目 案例1:基于ubuntu镜像构建一个新镜像,运行一个java项目 案例 ...

  8. 【Docker】7、数据卷详解:具名挂载、匿名挂载、初识DockerFile、数据卷容器

    1.什么是容器数据卷? docker的理念回顾 将应用和环境打包成一个镜像! 如果数据都在容器中,那么容器删除,数据就会丢失!需求:数据可以持久化.如:MySQL,容器删除了,MySQL数据可以存储在 ...

  9. ajax nginx 转发 sessionid_Nginx:初识Nginx(概念、在Docker中安装Nginx、常用命令、配置文件) - 怀梦想,致远方...

    1.Nginx初识 (1)概念 Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好 Nginx可以作为静态页面 ...

最新文章

  1. Linux 用户进程内存空间详解
  2. 交换和路由的区别?VLAN的特点?
  3. STM32 基础系列教程 10 - 单线串口(半双工)
  4. STL容器底层数据结构的实现
  5. openvino量化自己训练的yolov3模型至int8(有成功验证截图)
  6. FIR仿真module_04
  7. Android 整体设计及背后意义
  8. oracle自动撤销管理,Oracle 9i中自动撤销管理的优点分析
  9. C#运算符重载(操作符重载)
  10. 一个PHP多个界面跳转,php中的多种界面跳转方式
  11. Telerik RadColorPicker 漂移问题的解决
  12. 2022-2027年中国环锻件行业市场全景评估及发展战略规划报告
  13. 008高级用法markdown编写幻灯片
  14. sql基础语法,非常全建议收藏(大白菜程序猿欢迎大家关注)
  15. wait_proxies_to_terminate (../../../../../src/pm/i_hydra/mpiexec/intel/i_mpiexec.c:558): downstream
  16. iOS上线 ERROR ITMS-4238
  17. python中怎么打印出表格_怎么使用python脚本实现表格打印?
  18. 【专利转让】掌纹识别、图像复原、人脸检测定位相关领域
  19. 软件版本号:命名、说明、规范
  20. dp的sst模式下training流程

热门文章

  1. 关于MATLAB2019a的三相全控桥整流电路的画法学习
  2. 解决常见Surface上不了应用商店的问题
  3. 计算机整个文稿应用回顾主题,计算机应用教案16.doc
  4. 公司对不同职级能力抽象要求的具体化
  5. 根据cmd.exe的文件路径,30秒新建cmd快捷方式,并以管理员身份运行(保姆级图文)【杂记】
  6. CSS实现loading小动画
  7. 在Excel中连接字符串的方法
  8. 基于JavaWeb的影视评论网站设计与实现 毕业论文+项目源码及数据库文件
  9. 多普达(dopod)的来历与公司结构
  10. 基于Spring Boot在线学习系统设计与实现