前言
docker是为前端量身定做的
想象一下如下的场景
-
小明是一个前端,接了一个项目,这是个外包项目,客户有自己的服务器,但是客户的服务器比较老,环境配置又与小明的不同,小明看了一眼客户的服务器,一言难尽呀,让一个本来就不喜欢配置服务器的前端来搞这些不是难为人么,离时间节点越来越近了,客户也开始催了,小明欲哭无泪(环境不一致)
-
小明百度,谷歌,chatgpt都用上了,终于费了九牛二虎之力把自己的项目给客户部署上去了,小明长长的出了一口气,终于搞定了,太难了,费了两天时间呀,这时间也没和客户多要钱,亏了呀。一天后,小明接到客户电话,说你部署了你的项目以后,怎么我服务器上的其他项目都访问不到了,客户说要扣钱,小明急出了一身冷汗(环境未隔离)
-
今天客户打电话给小明说,你的项目有bug呀,有客户投诉,你得把这个bug改一下,但是一定要自测好哈,别到线上了又有bug。小明想,还以为是个简单的项目,当时也没搞开发环境和生产环境,主要这环境也难搞呀,现在也没法拿真实数据测试,到时候不会又要扣我钱吧(开发环境和生产环境难搞)
不知道你有没有遇到过上面这些情况,真是让人捏了一把汗呀。但是为了让大家避免这些情况的发生,解决上面这些难点,节约大家的时间,好好摸鱼,我们推荐你使用docker
,接下来有请我们今天的主角
1、 什么是docker?
Docker
是一个开源的应用容器引擎
Docker
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中
2、 为什么我们要使用docker?
环境配置如此麻烦,换一台机器,就要重来一次, 费力费时。
于是很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说安装的时候,把原始环境一模一样地复制过来。开发人员利用Docker可以消除协作编码时"在我的机器上可以正常工作"的问题。
将应用运行在Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。
js
Docker的理念是:一处封装、处处运行。
docker的优点
- 简化部署:Docker可以将应用程序及其依赖项打包成一个独立的容器,可以在任何环境中运行,从而简化了部署过程。不需要担心环境差异,只需在目标机器上安装Docker即可。
- 提高开发效率:Docker可以快速创建、启动和停止容器,使开发人员可以更快地进行开发、测试和调试。容器可以快速重现,因此开发人员可以轻松共享开发环境,避免了"在我的机器上可以运行"的问题。
- 资源利用率高:Docker容器是轻量级的,可以共享主机的操作系统内核,因此相比于传统的虚拟化技术,Docker的资源消耗更少,可以更高效地利用主机的计算资源。
3、 docker的三大要素
- Docker镜像(Docker Image):Docker镜像是一个只读的模板,包含了构建和运行Docker容器所需的所有文件和依赖项。可以将镜像看作是一种类似于操作系统的快照,可以用来创建和运行容器。
- Docker容器(Docker Container):Docker容器是从Docker镜像创建的运行实例。容器是独立的、轻量级的运行环境,可以包含应用程序及其所有依赖项。容器可以被快速启动、停止、删除和重启,具有隔离性和可移植性。
- Docker仓库(Docker Registry):Docker仓库是用于存储和共享Docker镜像的地方。它类似于代码仓库,可以将镜像推送到仓库中并从仓库中拉取镜像。Docker官方提供了公共的仓库,称为Docker Hub,同时也可以搭建私有的仓库来管理自己的镜像。
这三个要素共同构成了Docker的基本架构和运行环境。通过使用Docker镜像和容器,可以实现快速部署、开发和管理应用程序,并提供了高度可移植性和资源利用率,从而使得应用程序的开发和交付更加简单和高效
4、docker的使用场景有哪些?
-
环境一致性:
Docker
可以将应用及其依赖打包成一个容器,使得前端开发团队可以在不同的开发环境中保持一致的开发环境,避免因为环境不同导致的问题。 -
快速部署:Docker可以将应用打包成一个镜像,然后在任何支持Docker的环境中快速部署。前端开发团队可以使用Docker来快速部署自己的应用,减少了配置和部署的时间。
-
高可用性:Docker可以使用容器编排工具,如Kubernetes,来管理多个容器的部署和运行。前端开发团队可以使用Docker来实现应用的高可用性,通过自动扩缩容、故障转移等机制来保证应用的可用性。
-
开发和测试环境隔离:Docker可以为每个开发和测试环境提供一个独立的容器,避免了不同环境之间的相互影响。前端开发团队可以使用Docker来隔离开发和测试环境,提高开发和测试的效率。
-
跨平台开发:Docker可以在不同的操作系统中运行,包括Windows、Mac和Linux等。前端开发团队可以使用Docker来进行跨平台的开发,无需担心应用在不同操作系统上的兼容性问题。
5、总结
有人觉得我这篇文章写得好水呀,完全就是一篇科普文,也许就是粘贴复制来的
说一下我的感受吧,我认识docker已经很长时间了,但是没有真正用到过,主要是我接触的项目还没有用到docker的,这是第一点。但是随着最近研究CI/CD的深入,发现好多人都用docker,因为我不喜欢把项目变复杂,所以我就一直想弄明白,为什么非要用docker呢,不用不行么,到底有什么好处呢,使用场景都有哪些,什么时候可以不使用呢
我们做技术比较忌讳的就是为了用而用,到底为什么用也不知道。有人说我用了就知道了,对这样的言论请say no
,在用之前你可以花半天甚至更长的时间调研一下才是正确的选择,要不可能你用了半天可能会得出还不如以前的方式方便呢