Docker应用容器相对于 VM 有以下几个优点:
1、启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久
2、资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试
3、性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源
因为VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。个人体会较深的两处优点:
1、 快速部署,传统的部署模式是:安装(包管理工具或者源码包编译)->配置->运行;Docker的部署模式是:复制->运行。
2、 可以保证线上与测试环境一致,计划以后上线就直接复制测试使用的docker容器)
以下内容介绍了常用的8个Docker的真实使用场景,
原文链接: 8 Ways to Use Docker in the Real World
分别是简化配置、代码流水线管理、提高开发效率、隔离应用、整合服务器、调试能力、多租户环境、快速开发。我们一直在谈Docker,Docker怎么使用,在怎么样的场合下使用?也许本文可以帮到你。有需要交流的地方,可以通过评论与我们交流。
几周前我们参加了 DockerCon ,Dockercon是首个以Docker为中心的技术大会。它面向开发者以及对在Docker开放平台上构建、交付、运行分布式应用感兴趣的从业者,不论这些开放平台是运行于自用笔记本上或者是数据中心的虚拟机上。我们参加了这次大会,Flux7是Docker基础的系统集成合作伙伴,同时也是演讲嘉宾。
我们的CEO Aater Suleman和我们的一位客户一同进行了演讲。虽然DockerCon大会十分有趣,但我觉得大会太关注Docker的具体细节,而忽略了Docker的使用场景。所以,在这篇文章中,我想介绍并分享一些Docker的实际应用案例。
在我们讨论Docker的使用场景之前,先来看看Docker这个工具有什么特别的地方吧。
Docker提供了轻量级的虚拟化,它几乎没有任何额外开销,这个特性非常酷。
首先你在享有Docker带来的虚拟化能力的时候无需担心它带来的额外开销。其次,相比于虚拟机,你可以在同一台机器上创建更多数量的容器。
Docker的另外一个优点是容器的启动与停止都能在几秒中内完成。Docker公司的创始人 Solomon Hykes曾经介绍过Docker在单纯的LXC之上做了哪些 事情,你可以去看看。
下面是我总结的一些Docker的使用场景,它为你展示了如何借助Docker的优势,在低开销的情况下,打造一个一致性的环境。
1. 简化配置
这是Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。
2. 代码流水线(Code Pipeline)管理
前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
3. 提高开发效率
这就带来了一些额外的好处:Docker能提升开发者的开发效率。如果你想看一个详细一点的例子,可以参考Aater在 DevOpsDays Austin 2014 大会或者是DockerCon上的演讲。
不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,二是我们想快速搭建开发环境。
理想状态中,要达到第一个目标,我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态。然而,我们却不想每次都需要网络连接,每次重新编译的时候远程连接上去特别麻烦。这就是Docker做的特别好的地方,开发环境的机器通常内存比较小,之前使用虚拟的时候,我们经常需要为开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。
4. 隔离应用
有很多种原因会让你选择在一个机器上运行不同的应用,比如之前提到的提高开发效率的场景等。
我们经常需要考虑两点,一是因为要降低成本而进行服务器整合,二是将一个整体式的应用拆分成松耦合的单个服务(译者注:微服务架构)。如果你想了解为什么松耦合的应用这么重要,请参考Steve Yege的 这篇论文,文中将Google和亚马逊做了比较。
5. 整合服务器
正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。
6. 调试能力
Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。你可以在 《Docker拯救世界》的文章中找到这一点的例证。
7. 多租户环境
另外一个Docker有意思的使用场景是在多租户的应用中,它可以避免关键应用的重写。我们一个特别的关于这个场景的例子是为IoT(译者注:物联网)的应用开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂,很难处理,重新规划这样一个应用不但消耗时间,也浪费金钱。
使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,当然这一切得益于Docker环境的启动速度和其高效的 diff
命令。
你可以在 这里了解关于此场景的更多信息。
8. 快速部署
在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。
你可以在数据中心创建销毁资源而无需担心重新启动带来的开销。通常数据中心的资源利用率只有30%,通过使用Docker并进行有效的资源分配可以提高资源的利用率。
相关推荐
一、Docker案例介绍 二、Docker概念介绍 三、Docker与虚拟机对比 四、Docker应用场景 五、Docker的实用性 六、Docker基本原理 七、Docker基本命令介绍 八、Docker调度工具介绍 九、Docker最佳实践
在Docker场景下,如何使用新技术快速实现DevOps?
该项目为基于昇腾NPU的docker容器场景优化设计源码,包含76个文件,涵盖11个Go源文件、8个文本文件、8个头文件、8个C源文件、7个Shell脚本、4个Git忽略文件、4个C++源文件、4个模块文件、3个校验和文件、3个Markdown...
Docker和虚拟机(VM)是两种实现这些目标的技术,但它们在设计哲学、工作方式和使用场景上存在显著差异。本文将深入探讨Docker和虚拟机的技术差异,并分析它们在不同场景下的应用。 在现代IT架构中,虚拟化和容器化...
### Docker使用OpenStack Cinder 持久化 Volume 原理分析及实践 #### 1. 背景知识 ##### 1.1 OpenStack Cinder 简介 OpenStack Cinder 是一个为 OpenStack 提供块存储服务的项目,类似于 AWS 的 EBS (Elastic ...
通过YAML文件(通常命名为`docker-compose.yml`)来配置服务、网络和卷,然后使用`docker-compose`命令来启动、停止和管理这些服务。这样可以简化多容器应用的部署和管理,尤其适用于微服务架构。 **Docker&Docker ...
Docker作为一种轻量级的容器化技术,其应用场景广泛且多样,涵盖了开发、运维、持续集成/持续部署(CI/CD)、混合云/多云、边缘计算等多个方面。以下是Docker的一些主要应用场景: 1. 开发和测试环境 一致的开发...
2) KVM目前已成为学术界和工业界的主流虚拟机监控器(VMM)之一,已经在越来越多的应用场景中使用。 任务:通过KVM的官方网站https://www.linux-kvm.org/,在Linux系统中下载并安装使用KVM,进一步了解KVM的原理。 ...
在本文中,我们将深入分析 Docker 和 OpenStack 的应用场景,讨论它们之间的关系,以及如何将它们组合使用,以实现更好的云计算体验。 Docker 背景 Docker 是 Solomon Hykes 创立的,它提供了一种轻量级的容器化...
综合来看,这个压缩包提供了一种简便的方式来使用Docker,尤其是对于需要临时或便携式Docker环境的场景。通过Docker Compose,用户可以方便地管理多个容器化的服务,而ReadMe.txt将指导用户如何正确操作这些组件。...
docker原理及应用场景
8. **使用场景**: boot2docker适用于开发者进行本地开发和测试,以及需要在非Linux环境下运行Docker的场景。它可以快速启动一个轻量级的Docker环境,对于跨平台的开发和协作尤其有用。 总结,boot2docker_v19.03.5....
docker技术总结,介绍什么是docker,docker的使用场景,docker常见命令,及docker打包示例
特别是对于使用Docker Pro、Teams或Business许可证的用户,这些新功能将极大地提升他们的工作效率。 使用场景: - 开发者在本地机器上进行容器化应用程序的开发和测试。 - 需要对Dockerfile进行优化和最佳实践检查...
在很多情况下,特别是在企业级环境中或网络受限的场景下,需要进行离线安装Docker等软件。Docker作为一种轻量级的容器技术,在软件开发和部署流程中扮演着重要的角色。它允许开发者将应用程序及其依赖项打包在一个...
Docker 是一个开源的应用容器引擎,它基于 Go 语言并遵循 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个...确保正确处理所有依赖关系和配置,可以确保 Docker 在各种场景下都能顺畅地运行。
在Docker场景下,如何使用新技术快速实现DevOps.zip
在Docker场景下,如何使用新技术快速实现DevOps.pdf