理论知识
详细的命令怎么操作懒得写了,不懂问gpt
1. Docker是什么?
是一个开源的容器化平台,通过将应用程序及其依赖项打包在一个轻量级、可移植的容器中,来简化应用的开发、部署和运行,使得开发者可以在本地开发环境、测试环境和生产环境中使用完全相同的应用运行环境
人话:帮你把环境也打包了,不用配环境了
2. 镜像和容器是什么?
镜像是一个包含组件、依赖和配置文件的模板,它定义了容器的运行环境,比如一个mysql镜像,它包含mysql应用本身以及它所需要的环境变量,配置依赖等等。想想你把程序运行所需要的环境配置都打包了,是不是就不用安装这步了,传过来就能用
容器是镜像“实例化”后的运行对象
人话:想想你有些软件是不是不需要安装,解压缩就能用了,这种就类似一个镜像;容器就相当于软件跑起来的进程
3. 数据卷是什么?
是一个虚拟目录,让容器中的文件目录映射到宿主机的对应目录。因为Docker 容器的文件系统是临时的,当容器停止或删除时,容器内部的所有数据都会丢失。为了避免这种数据丢失,Docker 提供了数据卷的功能,让容器之间可以共享数据且实现数据持久化
宿主机你就理解为你运行docker的那个linux主机,容器就是你跑的mysql等等。因为容器的文件系统是临时的,如果我们不用数据卷,直接修改容器的文件时,对于本次运行的容器来说是有作用的,但是由于它不会被持久化,一旦容器停止、删除或者重新运行,你之前的修改都白费,所以我们就用数据卷对容器的文件进行修改,如此你后面再次运行这个数据卷,它就会找到这个数据卷并再次把修改写进去
4. 部署java项目怎么搞得,好乱
对于简单的项目,可以直接把项目打包成一个jar包,正确配置对应的Dockerfile,然后将两者一同上传到docker执行对应命令即可;对于复杂一点的项目建议用Docker Compose
Dockerfile 流程解析:当我把这个程序上传到docker时,它就是一个项目,然后它执行Dockerfile里面的命令,帮你把项目构建成一个镜像,然后你要通过docker run手动启动容器,然后还要手动启动你这个项目所需要的容器(比如mysql等等)
Docker Compose流程解析:当我把这个程序上传到docker时,它就是一个项目,启动Docker Compose,他会自动帮你完成构建镜像,启动容器,启动项目所需要的其他容器等操作