项目中为什么用Docker?

代码狂魔 2020-10-27 14:50:29 ⋅ 1000 阅读

 

项目为什么要用 docker,需要了解 docker 的优势,结合项目的实际情况来决定是否需要使用 docker,千万不能“为了使用而使用”或者“跟风使用 docker”。

使用 docker 是为了快速交付

和传统的虚拟机相比,docker 具有所用的资源更少、性能更高、隔离级别更高、安全性方面也更强等特点,让我们看看下面几个场景,估计你会有更深的体会。

01. 移植性更强

相信开发人员都会遇到这样的问题:代码在本地跑的好好的,但是一发布到测试环境怎么就有问题了呢?

通常我们的的代码包需要依赖于环境中的很多因素,比如配置文件、依赖库、中间件的配置等等,其中一项有问题可能都会导致我们代码出现问题;对于开发人员来说,最希望的就是我们的代码能够一次创建,在任意地方都能运行。

而使用 docker 之后,可以实现开发、测试、运维环境的标准化,镜像文件直接做为交付物,避免了因为环境不同导致的各种问题。

 

02. 更容易扩展

docker 容器可以在任意平台运行,不管是物理机还是虚拟机,不管是公有云还是私有云,甚至是个人电脑,所以我们的项目容易做迁移和扩展。

比如我们应用部署了两台机器,当我们想再扩展第三台机器的时候,我们需要先搭建好代码运行所需的环境,尽管虚拟机也有一些快速 copy 的技术,但是这个过程依然是很慢的,而且有些环境配置还容易出错,而有了 docker,只需要构建镜像然后运行即可,非常方便快速。

因为 docker 快速的构建方式,也让我们的项目可以实现自动且快速的扩容和缩容。

 

03. 更加轻量

在 docker 出现之前,通常会采用物理机上部署多台虚拟机,每个应用都部署在一个虚拟机中;但是虚拟机非常的重,虚拟机的构建速度通常都是按照分钟计算,占用的资源比较多。

而 docker 的速度很快,秒级,并且使用的资源更少,性能更高;同样一个物理机器,docker 运行的镜像数量远多于虚拟机的数量。

 

使用 docker 只是快速交付的一部分

docker 的优点这么多,那是不是用了 docker 之后,我们的交付速度更快了呢?

我见过一个项目,他们号称已经微服务化了,当然他们确实也做到了:把一个项目拆成了数个服务,每个服务在生产环境上部署了多套,算下来就是 N * M 个应用包(七八十个),都做了容器化...

  • 但是他们依然是人肉运维,也是就是他们每次提测和上线需要手动部署,没有自动化测试和发布;

  • 生产环境发生问题的时候,需要手动去拿日志跟踪问题,开发和运维依然是两个团队,甚至是所属两个不同的部门,沟通的成本很高;

  • 他们虽然实现了容器化,但其实并没有实现快速交付,甚至比传统的方式更慢了。

所以,不要为了 docker 而 docker;如果你们的项目环境配置复杂,每来一个新人配置环境都需要一两天;每次提测和上线,经常问题都是运行环境的问题;开发人员的开发环境不统一;开发能力强,运维能力弱的时候,甚至公司比较穷,想实现资源使用的最大化,都可以考虑使用 docker,不过像要做微服务化+容器化,当容器集群规模比较大的时候,还需要工具做容器的自动化管理和编排,自动化测试及部署等等。


全部评论: 0

    我有话说:

    项目为什么docker

    算,每台服务器都要做同样的事情,然后他们说可以...

    运用Docker快速部署分布式项目

    快速搭建Docker分布式项目环境

    DDDplus 1.0.2 发布,轻量级业务台开发框架

    DDDplus 简介 一套轻量级业务台开发框架,以DDD思想为本,致力于业务资产的可沉淀可传承,全方位解决复杂业务场景的扩展问题,实现台核心要素,赋能台建设。 融合了前台复杂生态协作方法论

    为什么阿里巴巴不建议 boolean 类型变量 isXXX?

    背景 平时工作大家经常使用到boolean以及Boolean类型的数据,前者是基本数据类型,后者是包装类,为什么不推荐使用isXXX来命名呢?到底是基本类型的数据好呢还是包装类好呢? 例子

    Docker 20.10.0 发布, K8s 宣布将弃 Docker 容器进行时之后发布的首个 版本

    Docker 20.10.0  发布了,这是自 K8s 宣布将弃 Docker 容器进行时之后发布的首个 Docker 版本。 本次更新内容包括: 弃/移除 当 docker 从不

    刚刚入职新公司,为什么老大不让Lombok?

    刚刚入职一家新的公司,在写业务的时候引入了Lombok 结果在老大在代码审查的时候在微信群里截图说不让在项目里面Lombok,说是会带来各种问题,大家都还在吗?

    为什么很多大公司选择使用 Node.js 做 Web 后端?

      大佬们问一下,为什么大的公司要Node.js 做web后端?并且Node 还要调用Java做数据落地?在网上看了一些帖子,发现很多大厂都是这样做,我们公司的项目也是这样的,但是在开发

    Excelize -Go 开源项目唯一支持复杂样式 XLSX 文件的类库

    Go 语言编写的一个来操作 Office Excel 文档类库

    分享一个标星42.4k 的商城管理后台项目模板

    项目简介 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品

    精品推荐:Docker与自动化测试及其测试实践

    Docker 本身并不会直接加速测试执行。在串行执行测试时,在容器执行测试反而会带来约 5% 左右的性能衰减。

    【简单】Docker - 实战TLS加密通讯

    快速配置一个最简单的docker TLS加密通讯

    精品推荐:Nacos 发布 v0.6.0 版本,支持 Dubbo 和 Docker 部署

    阿里巴巴微服务开源项目Nacos发布 v0.6.0 版本,该版本开始支持 Dubbo的服务发现和配置管理,并针对 Docker 部署提供了官方的 Docker 镜像,以及优化了Nacos 控制台的

    Docker Desktop 3.0.0 发布,Docker Hub 限制免费用户

    Docker Desktop 3.0.0 版本发布了。Docker Desktop 是一个支持 Windows 和 MAC 系统的完整桌面开发环境,包括 Docker App,开发人员工具

    Docker 20.10.6 发布,正式支持 Apple M1

    Docker 20.10.6 现已发布,具体更新内容如下: Client Apple Silicon (darwin/arm64) 对 Docker CLI 的支持 

    为什么要使用 Node.js?这几点你必须知道!

    经过这几年的发展,前端普遍进入了技术深水区,只会Web页面开发已经难以满足企业的需求,Node逐渐成为了刚性技能。 但Node在业务上的使用还没有那么普及,有的时候想老板还不同意,本文将从4个角度

    TypeScript Nodejs 项目结构

    引起的 图为rollbar统计的数千个项目数...

    Fes.js v0.4.1 版本发布,一套优秀的后台系统前端解决方案

    Fes.js 是一套优秀的后台前端解决方案。提供初始项目、开发调试、Mock接口、编译打包的命令行工具。内置布局、权限、数据字典、状态管理、存储、Api等多个模块。以约定、配置化、组件化的设计思想

    Docker - 大数据环境快速搭建步骤

    快速搭建一个大数据的环境,我们可以使用Docker来实现,文章会演示如何使用。

    SQL判断是否"存在",还在 count 操作?

    来源:http://toutiao.com/i6826511837840802315 根据某一条件从数据库表查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT