一.Dockerfile
前面我们说了使用dockerfile来构建自定义镜像非常简单,只需要几行命令,但是我们要如何使用dokcerfile来帮我们构建呢?换句话说,如何使用docker来执行dockerfile文件呢?这里肯定要使用一些命令。

说明:.与版本号之间有一个空格。此外构建镜像的命令为docker build -t 镜像名:版本号 dockerfile路径。一般情况下dockerfile所在目录和命令执行所在目录是一样的,我们就直接使用.就行了。如果不一样,要指定dockerfile所在目录。
在资料中准备了demo文件,里面有要构建的镜像jar包和Dockerfile文件,我们直接将其拖入到服务器中即可。

Dockerfile文件中的内容:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
/app.jar是要构建镜像的jar包在镜像中的存储位置。可以任意书写会自动创建。ENV/RUN用来设置时区,否则不是东八区,日志和运行时间都会有问题。
二.运行dockerfile
首先我们将demo文件传入到root目录下,然后dockerfile文件中的基础镜像并不存在,我们可以下载,也可以直接导入资料。


对于上传好的tar包,我们如何变为自己的镜像呢?回顾之间的命令:

我们使用docker load进行tar包的镜像加载构建:docker load -i jdk.tar。
然后我们进入demo目录运行dockerfile文件中的指令,因为我们想要直接写一个.,因此一定要进入demo目录,即dockerfile所在的目录,才能使用"."。保证dockerfile要构建镜像的jar包和dockerfile在同一个目录下。
接着就可以使用“docker build -t 镜像名:版本号 dockerfile路径”来构建自定义镜像。

执行完dockerfile的三步,就完成了自定义镜像的构建。接着查看镜像。

然后使用docker run运行一个容器。docker run -d --name dd -p 8080:8080(这个要看具体的,这里是8080) docker-demo:latest。

容器运行起来并通过dps查看容器状态。
通过docker logs -f dd查看容器日志:

访问8080端口及路径,成功

总结:
