`
sungyang
  • 浏览: 21623 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

docker使用场景

阅读更多

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并进行有效的资源分配可以提高资源的利用率。 

 

4
1
分享到:
评论

相关推荐

    docker技术介绍( 一)

    一、Docker案例介绍 二、Docker概念介绍 三、Docker与虚拟机对比 四、Docker应用场景 五、Docker的实用性 六、Docker基本原理 七、Docker基本命令介绍 八、Docker调度工具介绍 九、Docker最佳实践

    在Docker场景下,如何使用新技术快速实现DevOps?

    在Docker场景下,如何使用新技术快速实现DevOps?

    基于昇腾NPU的docker容器场景优化设计源码

    该项目为基于昇腾NPU的docker容器场景优化设计源码,包含76个文件,涵盖11个Go源文件、8个文本文件、8个头文件、8个C源文件、7个Shell脚本、4个Git忽略文件、4个C++源文件、4个模块文件、3个校验和文件、3个Markdown...

    Docker与虚拟机:技术差异与使用场景解析

    Docker和虚拟机(VM)是两种实现这些目标的技术,但它们在设计哲学、工作方式和使用场景上存在显著差异。本文将深入探讨Docker和虚拟机的技术差异,并分析它们在不同场景下的应用。 在现代IT架构中,虚拟化和容器化...

    Docker使用OpenStack Cinder持久化 volume原理分析及实践.docx

    ### Docker使用OpenStack Cinder 持久化 Volume 原理分析及实践 #### 1. 背景知识 ##### 1.1 OpenStack Cinder 简介 OpenStack Cinder 是一个为 OpenStack 提供块存储服务的项目,类似于 AWS 的 EBS (Elastic ...

    docker&docker-compose 19.03.14二进制安装

    通过YAML文件(通常命名为`docker-compose.yml`)来配置服务、网络和卷,然后使用`docker-compose`命令来启动、停止和管理这些服务。这样可以简化多容器应用的部署和管理,尤其适用于微服务架构。 **Docker&Docker ...

    Docker使用LVM存储配置direct-lvm模式

    本文将深入探讨如何使用LVM(逻辑卷管理器)存储配置Docker的direct-lvm模式。 首先,LVM(Logical Volume Manager)是一种强大的磁盘管理工具,它允许我们在物理硬盘上创建虚拟分区,这些分区称为逻辑卷,可以跨越...

    docker的应用场景.pdf

    Docker作为一种轻量级的容器化技术,其应用场景广泛且多样,涵盖了开发、运维、持续集成/持续部署(CI/CD)、混合云/多云、边缘计算等多个方面。以下是Docker的一些主要应用场景: 1. 开发和测试环境 一致的开发...

    Docker Desktop Installer 4.23.0

    Docker的使用场景非常广泛,包括微服务架构、自动化测试、持续集成和持续部署(CI/CD)、Web应用的快速部署以及大规模服务的分布式运行等。通过Docker,开发者和运维人员可以更加高效和方便地构建、分发和运行应用...

    docker,docker资源,包括:Docker的应用场景,Docker 的优点,Docker 是一个用于开发,交付和运行应用程序的开放平台

    Docker的主要应用场景包括: 1. Web应用的自动化打包和发布。开发人员可以将应用和环境配置文件一起打包,确保在不同环境中的运行一致性。 2. 自动化测试和持续集成、发布。Docker容器可以为测试环境提供完全隔离的...

    docker原理及应用场景

    Docker通过容器化技术提供了一种高效、隔离和可移植的解决方案,适用于从微服务架构、CI/CD流程到资源隔离和管理等多种应用场景,极大地简化了开发、测试和部署流程,是现代软件开发中不可或缺的工具。

    Docker与OpenStack应用场景分析.docx

    在本文中,我们将深入分析 Docker 和 OpenStack 的应用场景,讨论它们之间的关系,以及如何将它们组合使用,以实现更好的云计算体验。 Docker 背景 Docker 是 Solomon Hykes 创立的,它提供了一种轻量级的容器化...

    云计算实验报告一(KVM与Docker安装使用)

    2) KVM目前已成为学术界和工业界的主流虚拟机监控器(VMM)之一,已经在越来越多的应用场景中使用。 任务:通过KVM的官方网站https://www.linux-kvm.org/,在Linux系统中下载并安装使用KVM,进一步了解KVM的原理。 ...

    docker免安装版.tar.gz

    综合来看,这个压缩包提供了一种简便的方式来使用Docker,尤其是对于需要临时或便携式Docker环境的场景。通过Docker Compose,用户可以方便地管理多个容器化的服务,而ReadMe.txt将指导用户如何正确操作这些组件。...

    Install_Docker_offline_离线安装Docker_Install-Docker-Offline.zip

    然而,在没有互联网连接的环境中,传统的在线安装方法就显得不切实际,因此离线安装成为了这类场景下的首选解决方案。 离线安装Docker的过程涉及多个步骤和准备工作。首先,需要从官方或其他可信赖的来源下载Docker...

    Ubuntu 上如何安装Docker及基本用法

    等待安装完毕,使用以下命令启动 Docker:systemctl start docker。 6. Docker 的基本用法 Docker 的基本用法包括下载 Docker 图像,创建容器,访问容器等。您可以使用 Docker 搜索命令:docker search ubuntu 来...

    mysql 8.4.2 docker镜像包

    由于Docker容器在被停止或者删除后,其内部的数据也会随之丢失,因此通常需要将数据存储在Docker容器外部,或者使用Docker的数据卷(volumes)功能来持久化数据。 此外,Docker镜像包的大小也是一个需要关注的问题...

    docker mysql5.7 镜像

    Docker MySQL5.7镜像可以用于多种场景。例如,它可以用于开发和测试环境,快速搭建起数据库服务,以供应用开发和测试使用;也可以用于生产环境,提供稳定可靠的数据库服务。通过Docker的容器管理特性,还可以实现...

    boot2docker_v19.03.5.zip

    8. **使用场景**: boot2docker适用于开发者进行本地开发和测试,以及需要在非Linux环境下运行Docker的场景。它可以快速启动一个轻量级的Docker环境,对于跨平台的开发和协作尤其有用。 总结,boot2docker_v19.03.5....

Global site tag (gtag.js) - Google Analytics