理解 Docker
一、概述
“ Docker 是全球领先的软件容器平台 ”。开发人员利用 Docker 可以消除协作编码时“ 在我的机器上可正常工作 ”的问题。运维人员利用 Docker 可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用 Docker 可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的应用发布新功能-版本迭代(满足现代化企业的快速发展需求)。
二、面向不同的用户(个性化定制)
面向开发人员的Docker
Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
开发人员使用了 Docker,就不必安装和配置复杂的数据库,也无需在不兼容语言工具链版本之间切换时担心。应用容器化之后,其复杂性就被转移到能够轻松构建、共享和运行的容器中。当有新同事安排到新的项目组时,无需再费时费力地安装软件和配置各种所需的运行时环境。以 Dockerfile 文件形式发布的代码使用起来非常简单:首先安装 Docker 和编辑器,然后拉取作为 Docker 镜像打包在一起的依赖资源,短短数分钟,就能够构建和调试应用了。
特点:
1、不受应用、语言或技术栈的限制
构建、测试、调试和部署以任何编程语言编写的 Linux 和 Windows Server 容器应用,无需担心任何不兼容或版本冲突情况。
2、绝佳的开发体验
工作就绪时间缩短 65%:快速构建、测试和运行复杂的多容器应用,无需再浪费时间在服务器和开发人员机器上安装和维护软件。所有依赖资源都在容器中运行,消除“在我的机器上可正常工作”的问题。
3、内置容器编排
Docker 内置易于配置的 Swarm 集群功能。在使用最小设置的模拟生产环境中测试和调试应用。
三、面向系统管理员的Docker
Docker 简化了软件交付。既能顺利地开发和部署漏洞补丁与新功能,还能够实时扩展应用。
Docker 是开发人员和 IT 运维团队的秘密武器。有了 Docker,就能够自动并安全地构建、交付、测试和部署应用,顺利地进行移植。无需再查阅令人烦恼的论坛博客、叙述文件、运行手册、便利贴等等陈旧冗余的信息。使用 Docker 的团队后的镜像在开发、预演和生产环境中都能一样工作。新功能和修订都能迅速地悄然部署到客户环境中以正常的运行。
特点:
1、交付速度提高 13 倍
Docker 用户交付软件的速度平均提高了 13 倍。使用 Docker 的团队能够更加迅速地推送软件更新,将修订和新功能部署到客户环境中。
2、快速扩展
内置编排组件能够扩展到数千个节点容器。Docker 容器能够在短短数秒之内启动和停止,便于扩展应用服务,以满足客户的高峰需求,并在峰值下降时缩减规模。
3、提高效率、降低成本
应用维护和工时都能节省高达 10 倍。Docker 的轻松部署、识别和解决问题,降低了总体运维成本。缩短部署更新的停机时间,遇到问题时能迅速回滚,尽量减少系统应用中断运行的情况。
4、分发和共享内容
通过本地或云端的安全 Docker 镜像库构建、管理和分发 Docker 镜像,并在运维中自动同步镜像更新、配置更改和构建历史。
5、轻松共享应用
Docker 确保应用在任何环境中都能始终如一地工作。在 Docker 镜像中,整个技术栈和配置都是镜像的一部分,用户只需安装 Docker,无需配置复杂的主机环境。
6、保证应用安全
与授权用户安全地协作开发应用,全程保护代码安全。Docker Content Trust 和内置安全组件或者说安全机制确保在适当的时间将适当的代码提供给适当的人员。
四、面向企业的Docker
Docker 是现代应用平台的核心,是开发人员与运维人员、Linux 和 Windows 之间的纽带。Docker 既适用于云,也可以在本地部署;既支持传统架构,也支持微服务架构。使用 Docker 可以构建、连接、保护和调度容器,从开发到生产全程进行管理。Docker 以最优成本确保应用敏捷、支持云且安全,伴随企业踏上数字转型的征程。
特点:
1、一个平台,适用于所有应用
无论是单体应用还是微服务应用,无论是 Linux 还是 Windows 应用,无论是部署在本地还是在云端,Docker 为所有应用提供了一套统一的框架,一个标准的容器和工作流程,确保应用安全、敏捷、可移植。
2、大规模快速发布
Docker 容器通过自动化部署流程,加速微服务架构的应用交付。可以频繁地发布新功能(必要时也可实现快速回滚),迅速地满足客户需要。
3、打破壁垒
通过开放式接口、API 和插件,可以轻松地将 Docker 集成到现有环境,并扩展到不同的系统。开发和运维团队利用公共接口可以顺利协作,互不干扰。
认识容器
“ 容器是一种标准化的软件单元 ” ,将软件打包成标准化单元,以用于开发、交付和部署。
有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要像虚拟机那样捆绑一整套操作系统,只需要软件工作所需的库资源和设置即可。系统因此而变得高效、轻量、自给自足,还能保证部署在任何环境中的软件都能始终如一地运行。
容器镜像是轻量的、可执行的、独立的软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置等。容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
容器的三大重量级特性:
1、轻量级的
在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。
2、标准化的
Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行。
3、安全的
Docker 赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker 默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。
容器 VS 虚拟机
容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。
关于容器:
容器是一个应用层抽象,用于将代码和依赖资源打包在一起。多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆,最多也就几百兆),瞬间就能完成启动。
关于虚拟机:
虚拟机 (VM) 是一个物理硬件层抽象,用于将一台服务器变成多台服务器。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此占用大量空间。而且 VM 启动也十分缓慢。
容器和虚拟机共存
1、独立存在的容器
2、容器与虚拟机的融合
将容器和虚拟机配合使用,为应用的部署和管理提供极大的灵活性。
Docker 的发展历史
2013 年,Docker 横空出世,将软件容器概念推出市场,在应用开发领域掀起了一场革命浪潮。短短数年,Docker 在应用开发、打包和管理领域引入了一套新词汇、框架和标准,给行业带来了巨大的改变和影响。
公司成立之初的核心业务是 dotCloud,致力于将 dotCloud 转变成更优秀的 Linux 容器技术 - 一种可移植、易部署的灵活技术。Docker 后来将 libcontainer 开源,联手世界各地的贡献者推进开发进程。仅仅两年之后,随着容器生态的逐步发展和成熟,Docker 于 2015 年 6 月将规范和运行时环境代码(现称 runC)捐赠给了开放容器计划(OCI),以帮助制定容器的标准化方法。
在取得这一次巨大进步后,Docker 乘势而上,推出 Containerd 项目。Containerd 是 Docker 引擎守护进程的核心容器运行时环境。Containerd 是一种行业标准的容器运行时环境,具备简洁、稳健和可移植特性,是更高级系统的可嵌入式组件。Docker 引擎是基于 runC 和 Containerd 构建的。该协作项目为开发人员提供了应用的移植性,推动了 OCI 进行容器标准化,促进了工具生态圈的增长,繁荣了免费的镜像市场以便社区可以分享和改造预制的应用程序。
总的来说,Containerd 就是一种行业标准的容器运行时环境,具备简洁、稳健和可移植特性。它可以用作 Linux 和 Windows 的守护进程,负责管理主机系统整个容器的生命周期:镜像传输和存储、容器执行和监控、底层存储和网络连接。
Docker 应用场景
1、传统应用现代化
将现有应用打包至容器,无需更改应用代码,应用安全、成本和云可移植性的改进立竿见影。
2、开发运维 (CI/CD)
加速和自动化开发流程,获得快速反馈的同时消除应用冲突,提高开发人员生产力。
3、微服务
容器简化了以微服务架构模式设计的应用的开发和部署。
4、基础设施优化
将应用容器化,在相同的服务器上并行运行容器,改善工作负载强度。Docker 通过整合基础设施,提高利用率和加速云迁移,可帮助用户降低成本。
5、混合云
无论是私有数据中心还是公有云基础设施,Docker 都允许在各种基础设施之间无缝移植任何应用,而无需重新编码。加速云迁移,支持混合云环境或多重云环境。
参考自官网:Docker官网
参考自百科:百度百科
WIKI:WIKI
好了,关于 Docker快速入门系列(二)——理解Docker&容器 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。
作 者: | 华 仔 |
联系作者: | [email protected] |
来 源: | CSDN (Chinese Software Developer Network) |
原 文: | https://blog.csdn.net/Hello_World_QWP/article/details/83544059 |
版权声明: | 本文为博主原创文章,请在转载时务必注明博文出处! |