IT实战联盟博客:http://blog.100boot.cn

项目为什么要用 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,不过像要做微服务化+容器化,当容器集群规模比较大的时候,还需要工具做容器的自动化管理和编排,自动化测试及部署等等。

项目中为什么用Docker?相关推荐

  1. Abp Vnext应用程序项目中添加docker支持的小结

    文章目录 介绍 具体步骤 1.创建项目 2.添加docker支持 3.调整 4.运行实例 总结 介绍 abp vnext 里面的只有 module 项目里面是自动添加 docker 支持的,因为其是面 ...

  2. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  3. 【docker】——docker项目中使用phantomjs实现网页快照缩略图

    前言 前面有写博文,利用phantomjs实现网页快照,分别适配windows,linux,mac,好不容易搞好了,结果把项目镜像放到docker运行容器的时候,居然失效了.docker内部不也是li ...

  4. 在Spring Boot项目中使用Spock框架

    转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...

  5. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!

    点击上方"架构艺术",每日干货! 作者:晶晶 原文链接:https://blog.jjonline.cn/linux/239.html DevOps漫谈:谈一谈在PHP项目如何应用 ...

  6. Java项目中如何更优雅的处理空值?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 来源:https://lrw ...

  7. Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包

    场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. TFS在项目中DevOps落地进程(下)

    紧接上篇 TFS在项目中Devops落地进程(上) 再接着说TFS相关之前先插入一个番外篇,虽然跟TFS关系不大但跟DevOps关系很大,觉得有必要在此乱入一下. 番外篇--监控之Applicatio ...

  9. 在.Net项目中使用Redis作为缓存服务

    最近由于项目需要,在系统缓存服务部分上了redis,终于有机会在实际开发中玩一下,之前都是自己随便看看写写,很零碎也没沉淀下来什么,这次算是一个系统学习和实践过程的总结. 和Redis有关的基础知识 ...

  10. 实操教程丨如何将一个k3s集群集成到Gitlab项目中

    作者|RancherLabs 来源|CSDN企业博客 关于k3s K3s是由Rancher Labs发布的一个轻量级Kubernetes发行版,这款产品专为在资源有限的环境中运行Kubernetes的 ...

最新文章

  1. linux mysql 统一字符编码
  2. Daily Scrum 11.16
  3. 快速部署Linkis1.0文档
  4. Android 通过字符串来获取R下面资源的ID 值 文字资源
  5. CPU+GPU异构计算完全解析
  6. Kafka学习(一)-------- Quickstart
  7. 解决sourceTree的git clone 报SSH密钥认证失败的问题
  8. ieee期刊的科技写作思路曹文平_科学网—怎样向IEEE期刊投稿* - 吴雄君的博文
  9. 小程序是否转发群还是个人(转发功能)
  10. Angular Material 教程之布局篇 (五) : 布局参数
  11. 如何选择合适的数据可视化BI工具
  12. P3223 [HNOI2012]排队
  13. linux嵌入式6818,嵌入式ARM实验箱(FS_6818M4)_华清远见研发中心
  14. 屁孩君儿子讲解 2022 【例4.7】最小n值
  15. nginx 配置静态网页
  16. 使用mybatis-plus时,Feild doesn‘t have default value
  17. ARouter 源码解析(零) 基本使用
  18. 搞机器学习需要哪些技能
  19. HCL实验:用VRRP实现路由备份及负载分担
  20. java计算机毕业设计东理咨询交流论坛源码+数据库+系统+lw文档+部署

热门文章

  1. read()/write()的生命旅程之三——第三章:write()
  2. html----js控制下拉框(详解
  3. kancloud mysql内核_锁 · Mysql · 看云
  4. ios 数组中的字典排序_iOS开发——根据数组中的字典中的某一元素排序
  5. kettle使用数据库来生成序列_kettle 生成 ktr
  6. jmeter java_Jmeter 使用-JAVA请求
  7. 获得当月时间chuo_擅用GTD时间管理法,远离焦虑情绪,让你的工作、学习井然有序...
  8. smartdns使用指南_SmartDNS配合某插件进阶上网使用教程(基于N1盒子Op系统)
  9. 知识竞赛现场管理系统安装配置及使用疑难问题汇编
  10. SQLServer版本对应内部数据库版本号配置表