-
Docker镜像的制作
首先docker是什么,在我的入门中有介绍,他是一个容器,所以在容器运行的内容就叫做镜像,二者并没有什么必要的联系,网络上五花八门的讲解搞了几天,就很无语,不就是给你准备制作镜像的内容打个标签,然后推送在dockerhub上面然后达到公共访问的效果,搞得人心塞,以下是我最后琢磨出来的部署方式:
- 首先你得有
docker hub
,去官网注册一个自己的账号:Docker hub,准备工作的第一步。然后就需要
- 首先你得有
安装docker服务,不管在哪里都得安装,安装docker服务的教程可以移步去Docker安装 去进一步学习,下面开始步入正文:
在众多博客主的总结中都是以优缺利弊对打包进行分析,我菜,我最后就研究出了一种方法,优缺利弊我辩不来,就是编写Dockerfile文件,不要去看什么maven构建镜像,费劲,首先打爆你的项目文件,以我新写的一个springboot项目为例,正常去打包得到正常的一个jar包:
然后开始编写Dockerfile文件,Dockerfile用于构建镜像的配置文件,给你举个例:
# 使用官方的Java 17运行环境作为父镜像
FROM openjdk:17
# 变量,代表待复制的jar文件的路径
ARG JAR_FILE=server_check/*.jar
# 将本地的jar文件复制到容器的根目录下,并重命名为 server_check.jar
COPY ${JAR_FILE} /server_check.jar
# 设置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/server_check.jar"]
有注释就不解释了,做个命令的区分:
FROM
:指定基础镜像 类似与你的运行环境
RUN
:执行的意思,RUN后面跟的都可以被执行
CMD
:指定一个创建容器时的默认的命令
ADD
:将文件或者目录复制于镜像中,还有URL
COPY
:只是将文件或目录做一个复制(也是在镜像中)
ENTRYPOINT
:设置容器创建时的主要命令;如上我设置的启动容器后执行我jar包的命令
EXPOSE
:声明容器运行时监听的特定网络端口
COPY和ADD的区别:
- ADD :在执行源文件为tar压缩,若压缩格式为gzip或bzip2以及xz的情况下会自动解压并复制,但是不解压前提下无法复制tar文件,导致镜像构建失败。
- COPY:简单地复制文件或目录从源到镜像的目标路径。官方更推荐使用COPY
构建镜像
我构建的时候是在我的unbantu服务器进行的,在上传文件时注意不要将Dockerfile文件上传在jar包所在的文件夹中,应该在同一位置,这样进行编译时才不会失败,还有注意镜像名尽量不要设置大写,会报错。构建完以后按以下命令去执行:
- 登录你的Docker hub :
docker login
- 然后通过:
docker push 你的用户名/镜像名
推送到docker hub
上面。 - 之后便可以进入你的仓库检查是否推送成功
- 运行命令:
docker run 仓库名/镜像名:latest
如图:小本买卖就不暴露了。至此操作结束。✿✿ヽ(°▽°)ノ✿