第一章:Docker简介
前言
作为本系列的起始章节,本章节主要是对
Docker
的相关概念进行简单阐述下。自此也是查阅了相关资料,奈何也都是英文版居多,看的是有点头大的。现在悔不当初不好好学习英文了。o(︶︿︶)o 唉
Docker是什么
Docker 是世界领先的软件容器平台。开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为 Linux 和 Windows Server 应用发布新功能-----《Docker中文网站》
其实我的理解是,Docker就是一个工具,可以快速的创建和模拟各类环境的一个工具。而且性能很好,扩展性也强。相信大家都有用过虚拟机,之前的虚拟机大小动辄以G起跳,对于可怜巴巴的开发机而言,实在是耗不起。而且,启动又慢又卡。
Docker优点
和传统的虚拟机比较而言,作为一种新型的虚拟化方式,其具有众多的优势。
对于开发者
Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件(哈哈,这是真的吗)。
开发人员使用了 Docker
,就不必安装和配置复杂的数据库,也无需在不兼容语言工具链版本之间切换时担心。应用容器化之后,其复杂性就被转移到能够轻松构建、共享和运行的容器中。当有新同事安排到新的代码库时,无需再费时费力地安装软件和解释设置过程。以 Dockerfile 文件形式发布的代码使用起来非常简单:首先安装 Docker 和编辑器,然后拉取作为 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组成
客户端和服务端
Docker是一个(C/S)架构的程序。Docker客户端只需向Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有的工作并返回结果。Docker守护进程有时也称为Docker引擎。
镜像(Images)
镜像就是程序运行的环境的只读版本。其包含了所有程序的依赖软件和配置。
容器(Container)
Docker 利用容器(Container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库(Repository)
仓库用来保存镜像,可以理解为代码控制中的代码仓库。
应用场景
微服务
现在微服务大行其道之下,微服务拆分后,一个项目可能部署包就成倍增加了,而且可能各微服务之间的技术栈是不同的,这时候docker就是最佳选择了。
持续集成和持续部署 (CI/CD)
结合Jenkins,通过 Docker 加速应用管道自动化和应用部署,交付速度了有很大程度的提高。
IT 基础设施优化
Docker 和容器有助于优化 IT 基础设施的利用率和成本。优化不仅仅是指削减成本,还能确保在适当的时间有效地使用适当的资源。
容器化传统应用
容器不仅能提高现有应用的安全性和可移植性,还能节约成本。
总结
本章节主要是介绍了下
Docker
的相关概念的知识。说实话,写完我也是有点懵的,对于其底层架构还是不了解。所以大家看的时候可以自行搜索资料下,我也是找了很多资料的,但还是不太了解。这章节是我写的最慢的了,真的对于不熟悉的事物,写起来很费时间呀,特别是一些概念的东西,就更是了!最后,文中若有错误之处,还望指出!
作者:oKong
链接:https://www.jianshu.com/p/7e9feb62402c