前言

作为本系列的起始章节,本章节主要是对Docker的相关概念进行简单阐述下。自此也是查阅了相关资料,奈何也都是英文版居多,看的是有点头大的。现在悔不当初不好好学习英文了。o(︶︿︶)o 唉

Docker是什么

Docker 是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能-----《Docker中文网站》

其实我的理解是,Docker就是一个工具,可以快速的创建和模拟各类环境的一个工具。而且性能很好,扩展性也强。相信大家都有用过虚拟机,之前的虚拟机大小动辄以G起跳,对于可怜巴巴的开发机而言,实在是耗不起。而且,启动又慢又卡。

Docker优点

和传统的虚拟机比较而言,作为一种新型的虚拟化方式,其具有众多的优势。

对于开发者

Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件(哈哈,这是真的吗)。

开发人员使用了 Docker,就不必安装和配置复杂的数据库,也无需在不兼容语言工具链版本之间切换时担心。应用容器化之后,其复杂性就被转移到能够轻松构建、共享和运行的容器中。当有新同事安排到新的代码库时,无需再费时费力地安装软件和解释设置过程。以 Dockerfile 文件形式发布的代码使用起来非常简单:首先安装 Docker 和编辑器,然后拉取作为 Docker 镜像打包在一起的依赖资源,短短数分钟,就能够构建和调试应用了。

  • 不受应用、语言或技术栈限制

    构建、测试、调试和部署以任何编程语言编写的 Linux 和 Windows Server 容器应用,无需担心任何不兼容或版本冲突。

  • 绝佳的开发体验

    工作就绪时间缩短 65%:快速构建、测试和运行复杂的多容器应用,无需再浪费时间在服务器和开发人员机器上安装和维护软件。所有依赖资源都在容器中运行,消除“在我的机器上可正常工作”的问题。

  • 内置容器编排

    Docker 内置易于配置的 Swarm 集群功能。在使用最小设置的模拟生产环境中测试和调试应用。

对于实施运维

Docker 简化了软件交付。既能顺利地开发和部署漏洞补丁与新功能,还能够实时扩展应用。

Docker 是开发人员和 IT 运维团队的秘密武器。有了 Docker,他们能够自动并安全地构建、交付、测试和部署应用,顺利地进行移植。无需再阅读令人烦恼的 Wiki、自述文件、运行手册、便利贴等等陈旧冗余的信息。使用 Docker 的团队确信他们的镜像在开发、预演和生产环境中都能一样工作。新功能和修订都能迅速地悄然部署到客户环境。

  • 快速扩展

    内置编排能够扩展到数千个节点和容器。Docker 容器能够在短短数秒之内启动和停止,便于扩展应用服务,以满足客户的高峰需求,并在峰值下降时缩减规模。

  • 提高 IT 效率

    Docker 让客户轻松部署、识别和解决问题,降低总体 IT 运维成本。缩短部署更新的停机时间,或者迅速回滚,尽量减少中断运行情况。

  • 轻松共享应用

    Docker 确保应用在任何环境中都能始终如一地工作。在 Docker 镜像中,整个技术栈和配置都是镜像的一部分,用户只需安装 Docker,无需配置主机环境。

个人觉得最主要的特点就是可以从繁琐又重复的部署或者安装过程进行了简化,基本就是一键完成,简单又不容易出错。这下测试人员就有理由怼开发了:
测试:什么可能环境不一致,都一个镜像里面出来的!
开发:.....(无语凝噎)

Docker基本概念及组成

对于Docker而言,主要是使用了容器技术。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效、轻量、自给自足,还能保证部署在任何环境中的软件都能始终如一地运行。

而外插一句,容器和虚拟机比较:

简单来说,Docker主要由以下几个部分组成。

客户端和服务端

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

镜像(Images)

镜像就是程序运行的环境的只读版本。其包含了所有程序的依赖软件和配置。

容器(Container)

Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

仓库(Repository)

仓库用来保存镜像,可以理解为代码控制中的代码仓库。

应用场景

  • 微服务

    现在微服务大行其道之下,微服务拆分后,一个项目可能部署包就成倍增加了,而且可能各微服务之间的技术栈是不同的,这时候docker就是最佳选择了。

  • 持续集成和持续部署 (CI/CD)

    结合Jenkins,通过 Docker 加速应用管道自动化和应用部署,交付速度了有很大程度的提高。

  • IT 基础设施优化

    Docker 和容器有助于优化 IT 基础设施的利用率和成本。优化不仅仅是指削减成本,还能确保在适当的时间有效地使用适当的资源。

  • 容器化传统应用

    容器不仅能提高现有应用的安全性和可移植性,还能节约成本。

总结

本章节主要是介绍了下Docker的相关概念的知识。说实话,写完我也是有点懵的,对于其底层架构还是不了解。所以大家看的时候可以自行搜索资料下,我也是找了很多资料的,但还是不太了解。这章节是我写的最慢的了,真的对于不熟悉的事物,写起来很费时间呀,特别是一些概念的东西,就更是了!最后,文中若有错误之处,还望指出!

题外话:还是动手实践轻松呀,下章节就开始动手了~

参考资料

  1. https://www.docker.com/what-docker
  2. https://www.docker-cn.com/
  3. https://blog.csdn.net/kisscatforever/article/details/78896625
  4. https://www.cnblogs.com/SzeCheng/p/6822905.html

老生常谈

  • 个人QQ:499452441
  • 微信公众号:lqdevOps

个人博客:http://blog.lqdev.cn

原文地址:http://blog.lqdev.cn/2018/07/29/docker/docker-one/

Docker | 第一章:Docker简介的更多相关文章

  1. 第一章 C++简介

    第一章  C++简介 1.1  C++特点 C++融合了3种不同的编程方式:C语言代表的过程性语言,C++在C语言基础上添加的类代表的面向对象语言,C++模板支持的泛型编程. 1.2  C语言及其编程 ...

  2. python 教程 第一章、 简介

    第一章. 简介 官方介绍: Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使 ...

  3. 学习笔记-[Maven实战]-第一章:Maven简介

    Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...

  4. 《跟我学Shiro》学习笔记 第一章:Shiro简介

    前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...

  5. 《JavaScript高级程序设计》——第一章JavaScript简介

    第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...

  6. docker第一章:docker核心概念及centos6下安装

    Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...

  7. docker第一章

    简介 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源. D ...

  8. docker第一章--介绍和安装

  9. 第一章 Shiro简介——《跟我学Shiro》(转)

    目录贴:跟我学Shiro目录贴 1.1  简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可 ...

随机推荐

  1. 安装pyenv版本管理

    系统:Centos7.4 安装pyenv是为了更好的管理python的版本. 在进行安装操作之前,首先使用普通用户test,进行操作,如下: #安装之前先安装依赖的库 [test@localhost ...

  2. SpringMvc之参数绑定注解详解之三

    2. @RequestHeader.@CookieValue @RequestHeader 注解,可以把Request请求header部分的值绑定到方法的参数上. 示例代码: 这是一个Request ...

  3. Jenkins配置邮件SMTP(使用QQ邮箱)

    一.QQ邮箱中开启SMTP服务 进入QQ邮箱的设置页面,选择开启POP3/SMTP服务 需要发送一条短信开启服务,成功后,会收到一个密码,一定要截图.复制密码保存好 二.Jenkins中配置SMTP ...

  4. Ruby环境搭建与“Hello World”

    Ruby的环境搭建比较简单,在http://rubyinstaller.org/downloads/可以得到Ruby的安装包, 安装过程没什么问题.安装完成之后需要配置一下环境变量: 在PATH中填入 ...

  5. Reporting Services无法连接ORACLE,提示:System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本

    Reporting Services无法连接ORACLE,在服务器安装ORACLE 11客户端版本后仍然提示以下错误: System.Data.OracleClient 需要 Oracle 客户端软件 ...

  6. js页面跳转常用的几种方式(转)

    js页面跳转常用的几种方式 转载  2010-11-25   作者:    我要评论 js实现页面跳转的几种方式,需要的朋友可以参考下. 第一种: 复制代码代码如下: <script langu ...

  7. js开发:数组的push()、pop()、shift()和unshift()(转)

    js开发:数组的push().pop().shift()和unshift() 2017-05-18 11:49 1534人阅读 评论(0) 收藏 举报  分类: javascript开发(22)  版 ...

  8. C++中对象的常引用

    直接传递对象名 用对象名做函数参数时,在函数调用时将建立一个新的对象,它是形参对象的拷贝. ================下面给出一个直接传递对象名的例子程序1.1================= ...

  9. Ensembl突变数据描述之(一)——突变物种数据库及预测工具

    以下是对Ensembl突变数据库中储存的数据的描述,对于Ensembl数据库中不同的物种,我们从各种来源(例如,dbSNP数据库)导入突变数据(SNP.CNV.等位基因频率.基因型等),导入的突变数据 ...

  10. p1198&bzoj1012 最大数

    传送门(洛谷) 传送门(bzoj) 题目 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数 ...