🔥你真的搞明白我们为什么要使用docker么?

举报
yd_244540595 发表于 2024/10/30 17:42:41 2024/10/30
【摘要】 作者:把摸鱼做大做强前言docker是为前端量身定做的想象一下如下的场景小明是一个前端,接了一个项目,这是个外包项目,客户有自己的服务器,但是客户的服务器比较老,环境配置又与小明的不同,小明看了一眼客户的服务器,一言难尽呀,让一个本来就不喜欢配置服务器的前端来搞这些不是难为人么,离时间节点越来越近了,客户也开始催了,小明欲哭无泪(环境不一致)小明百度,谷歌,chatgpt都用上了,终于费了九...

作者:把摸鱼做大做强

前言

docker是为前端量身定做的

想象一下如下的场景

  1. 小明是一个前端,接了一个项目,这是个外包项目,客户有自己的服务器,但是客户的服务器比较老,环境配置又与小明的不同,小明看了一眼客户的服务器,一言难尽呀,让一个本来就不喜欢配置服务器的前端来搞这些不是难为人么,离时间节点越来越近了,客户也开始催了,小明欲哭无泪(环境不一致)

  2. 小明百度,谷歌,chatgpt都用上了,终于费了九牛二虎之力把自己的项目给客户部署上去了,小明长长的出了一口气,终于搞定了,太难了,费了两天时间呀,这时间也没和客户多要钱,亏了呀。一天后,小明接到客户电话,说你部署了你的项目以后,怎么我服务器上的其他项目都访问不到了,客户说要扣钱,小明急出了一身冷汗(环境未隔离)

  3. 今天客户打电话给小明说,你的项目有bug呀,有客户投诉,你得把这个bug改一下,但是一定要自测好哈,别到线上了又有bug。小明想,还以为是个简单的项目,当时也没搞开发环境和生产环境,主要这环境也难搞呀,现在也没法拿真实数据测试,到时候不会又要扣我钱吧(开发环境和生产环境难搞)


不知道你有没有遇到过上面这些情况,真是让人捏了一把汗呀。但是为了让大家避免这些情况的发生,解决上面这些难点,节约大家的时间,好好摸鱼,我们推荐你使用docker,接下来有请我们今天的主角

顺便吆喝一句,技术大厂内推,前/后端or测试机会,尤其东莞、深圳等地紧缺!感兴趣来→这里

1、 什么是docker?


Docker 是一个开源的应用容器引擎

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中

2、 为什么我们要使用docker?

环境配置如此麻烦,换一台机器,就要重来一次, 费力费时。

于是很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说安装的时候,把原始环境一模一样地复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题。

将应用运行在Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。

Docker的理念是:一处封装、处处运行。

下面这个图更容易帮助我们理解docker


docker的优点

  1. 简化部署:Docker可以将应用程序及其依赖项打包成一个独立的容器,可以在任何环境中运行,从而简化了部署过程。不需要担心环境差异,只需在目标机器上安装Docker即可。
  2. 提高开发效率:Docker可以快速创建、启动和停止容器,使开发人员可以更快地进行开发、测试和调试。容器可以快速重现,因此开发人员可以轻松共享开发环境,避免了“在我的机器上可以运行”的问题。
  3. 资源利用率高:Docker容器是轻量级的,可以共享主机的操作系统内核,因此相比于传统的虚拟化技术,Docker的资源消耗更少,可以更高效地利用主机的计算资源。

3、 docker的四大要素

  1. Docker镜像(Docker Image):Docker镜像是一个只读的模板,包含了构建和运行Docker容器所需的所有文件和依赖项。可以将镜像看作是一种类似于操作系统的快照,可以用来创建和运行容器。
  2. Docker容器(Docker Container):Docker容器是从Docker镜像创建的运行实例。容器是独立的、轻量级的运行环境,可以包含应用程序及其所有依赖项。容器可以被快速启动、停止、删除和重启,具有隔离性和可移植性。
  3. Docker仓库(Docker Registry):Docker仓库是用于存储和共享Docker镜像的地方。它类似于代码仓库,可以将镜像推送到仓库中并从仓库中拉取镜像。Docker官方提供了公共的仓库,称为Docker Hub,同时也可以搭建私有的仓库来管理自己的镜像。
  4. Docker文件(Dockerfile):镜像构建的模版,描述镜像构建的步骤。

它们之间的关系是,通过Dockerfile构建出镜像,然后通过镜像来创建容器,程序就跑在容器中。并且一个镜像可以随意创建N个容器,各个容器间相互隔离。


4、docker的使用场景有哪些?

  1. 环境一致性:Docker可以将应用及其依赖打包成一个容器,使得前端开发团队可以在不同的开发环境中保持一致的开发环境,避免因为环境不同导致的问题。

  2. 快速部署:Docker可以将应用打包成一个镜像,然后在任何支持Docker的环境中快速部署。前端开发团队可以使用Docker来快速部署自己的应用,减少了配置和部署的时间。

  3. 高可用性:Docker可以使用容器编排工具,如Kubernetes,来管理多个容器的部署和运行。前端开发团队可以使用Docker来实现应用的高可用性,通过自动扩缩容、故障转移等机制来保证应用的可用性。

  4. 开发和测试环境隔离:Docker可以为每个开发和测试环境提供一个独立的容器,避免了不同环境之间的相互影响。前端开发团队可以使用Docker来隔离开发和测试环境,提高开发和测试的效率。

  5. 跨平台开发:Docker可以在不同的操作系统中运行,包括Windows、Mac和Linux等。前端开发团队可以使用Docker来进行跨平台的开发,无需担心应用在不同操作系统上的兼容性问题。

5、总结

有人觉得我这篇文章写得好水呀,完全就是一篇科普文,也许就是粘贴复制来的

说一下我的感受吧,我认识docker已经很长时间了,但是没有真正用到过,主要是我接触的项目还没有用到docker的,这是第一点。但是随着最近研究CI/CD的深入,发现好多人都用docker,因为我不喜欢把项目变复杂,所以我就一直想弄明白,为什么非要用docker呢,不用不行么,到底有什么好处呢,使用场景都有哪些,什么时候可以不使用呢

我们做技术比较忌讳的就是为了用而用,到底为什么用也不知道。有人说我用了就知道了,对这样的言论请say no,在用之前你可以花半天甚至更长的时间调研一下才是正确的选择,要不可能你用了半天可能会得出还不如以前的方式方便呢

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。