Docker | 第一章:Docker简介
前言
作为本系列的起始章节,本章节主要是对
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
的相关概念的知识。说实话,写完我也是有点懵的,对于其底层架构还是不了解。所以大家看的时候可以自行搜索资料下,我也是找了很多资料的,但还是不太了解。这章节是我写的最慢的了,真的对于不熟悉的事物,写起来很费时间呀,特别是一些概念的东西,就更是了!最后,文中若有错误之处,还望指出!
题外话:还是动手实践轻松呀,下章节就开始动手了~
参考资料
- https://www.docker.com/what-docker
- https://www.docker-cn.com/
- https://blog.csdn.net/kisscatforever/article/details/78896625
- 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简介的更多相关文章
- 第一章 C++简介
第一章 C++简介 1.1 C++特点 C++融合了3种不同的编程方式:C语言代表的过程性语言,C++在C语言基础上添加的类代表的面向对象语言,C++模板支持的泛型编程. 1.2 C语言及其编程 ...
- python 教程 第一章、 简介
第一章. 简介 官方介绍: Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使 ...
- 学习笔记-[Maven实战]-第一章:Maven简介
Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...
- 《跟我学Shiro》学习笔记 第一章:Shiro简介
前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...
- 《JavaScript高级程序设计》——第一章JavaScript简介
第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...
- docker第一章:docker核心概念及centos6下安装
Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...
- docker第一章
简介 Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源. D ...
- docker第一章--介绍和安装
- 第一章 Shiro简介——《跟我学Shiro》(转)
目录贴:跟我学Shiro目录贴 1.1 简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可 ...
随机推荐
- 初识Luajit
转自:http://www.cppblog.com/pwq1989/archive/2013/11/28/204487.html 大家可以从官网下载到源码(http://luajit.org/),也可 ...
- java基础知识(8)---内部类
内部类:如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内 ...
- 十六、xx.xx.xx格式版本号大小比较
DELIMITER $$ USE `deshangshidai`$$ DROP FUNCTION IF EXISTS `STRCMP_MY_VERSION`$$ CREATE DEFINER=`roo ...
- 关于javaScript事件委托的那些事
今天是第一次写稿,还是有那么一丢丢小鸡冻...回归正题啦... 关于javaScript事件委托不得不说的那些事,为什么要使用事件委托? 我们可以这么说,假设老板要分配一项任务,首先要秘书叫A君来到办 ...
- Http协议以及模拟http请求发送数据
1 为什么要使用http协议 假设我现在有两个客户端浏览器,一个是google,一个是IE浏览器:我现在有两个服务器,一个是tomcat,一个是JBoss;在最初的情况下是:如果google要往tom ...
- [matlab]bp神经网络工具箱学习笔记
基本就三个函数: newff():创建一个bp神经网络 train():训练函数 sim():仿真函数 同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全 工具箱:Neural ne ...
- 第四周作业-视频学习、教材作业wireshark
教材总结与作业 总结 网络嗅探技术定义:网络嗅探(sniff)是一种黑客常用的窃听技术,(1)利用计算机的网络接口截获目的地为其他计算机的数据报文,(2)监听数据流中所包含的用户账户密码或私密通信等. ...
- Linux中常用压缩命令
.zip格式压缩 zip 压缩文件名 源文件 压缩文件 zip -r 压缩文件名 源目录 压缩目录 .zip格式解压缩 unzip 压缩文件 解压.zip文件 .gz格式压缩 gzip 源文件 压缩为 ...
- jQuery之ajax() 参数
- Ubuntu系统配置的一些要点
硬盘安装时必须先卸载光驱! 安装时如果是uefi,应该把引导驱动器设为windows所在的硬盘,否则设为整个硬盘..然后就可以用easybcd来设置windows下的引导. unity tweak t ...