概念了解
1.镜像:
类似于类与实例关系中的类,也类似于系统镜像的概念,对于前端而言,镜像就是包含了代码运行所需要的一切产物、依赖、配置等。这样的话,可以保证每次程序运行的环境一致。构建镜像,一般都是通过一个文本文件来生成。这个文件就是 Dockerfile,文件内容就是一系列的指令集合。举例来说,对于一个简单的前端应用来说,首先需要安装 NodeJS 作为运行环境,其次则是需要安装依赖,最后需要通过npm run build这样的命令来构建应用产物。这个过程在 Dockerfile 中就是一系列的指令集合。
2.容器:
类似于类与实例关系中的实例,有了镜像以后,可以通过镜像产出容器,这个"容器"就是实例的概念,所以拿到容器以后可以放到任意平台去使用、比如 windows、linux、unix 等,真正做到了一处开发,到处使用的功能。需要注意的是容器并不是虚拟机、它只是一个进程,同普通程序一样,理解这点在启动容器的时候尤为重要。
3.仓库:
Docker 中的仓库其实和 github、gitee 这样的代码仓库是类似的概念,只是后者是用来存储源代码、而前者是用来存储镜像的,比如前端肯定会使用到的 NodeJS,则是在 Docker Hub 中可以找到。使用的时候,就可以在仓库中找到对应的镜像即可。同样自己写的镜像也可以上传到仓库中,类似于 git 的 push 操作,而 pull 操作则是从仓库中拉取镜像。
4.Volumes:
Volumes 翻译过来为卷,就是磁盘中的卷的意思,Docker 中的卷主要是用来持久化数据的。当我们生成镜像的时候,需要保持镜像体积尽可能的小,并且镜像中操作数据,下次再去构建时并不会保存操作的数据,因此是不建议在镜像中去操作数据的,如果有操作数据的需要,则可以使用卷关联宿主机上的某个文件夹来持久化保存数据。对于前端而言,这个功能用到的很少。