dockerfile的应用

dockerfile的应用,第1张

dockerfile的应用 什么是Dockerfile?

Dockerfile本质上其实是包含各种指令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成镜像。docker build命令用于从Dockerfile构建映像。

Dockerfile的基本结构

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像 *** 作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。

组成部分 部分命令基础镜像信息FROM维护者信息MAINTAINER镜像 *** 作指令RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等容器启动时执行指令CMD、ENTRYPOINT

Dockerfile命令 1、FROM

FROM:基础镜像,当前新镜像是基于哪个镜像的

实例:
FROM java:8
2、MAINTAINER

MAINTAINER:镜像维护者的姓名和邮箱地址

实例:
MAINTAINER HongHuaYu 101111@qq.com
3、RUN

RUN:容器构建时需要运行的命令

实例:
RUN echo 'hello docker!' 
    > /usr/local/file.txt
4、EXPOSE

EXPOSE:当前容器对外暴露的端口号

实例:
EXPOSE 8080
5、WORKDIR

WORDIR:指定在容器创建后,终端默认登录进来工作目录,一个落脚点

实例:
WORKDIR /usr/local
6、ENV

ENV
ENV:用来在构建镜像过程中设置环境变量。
举例:ENV MY_PATH /usr/mytest
ENV这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前指定了环境变量前缀一样;也可以在其他指令中直接使用这些环境变量,比如WORKDIR
$MY_PATH

7、ADD

ADD:将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包 ADD

实例:
ADD eladmin.jar eladmin.jar
8、COPY

COPY:类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包。COPY将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置。
它的使用方法有两种:COPY src test和COPY [“src”,“dest”]

COPY

实例:
COPY application.yml /etc/springboot/hello-service/src/resources
9、VOLUME

VOLUME:容器数据卷,用于数据保存和持久化工作

实例:
VOLUME /data/db /data/configdb
10、CMD

CMD:指定一个容器启动时要运行的命令。dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker
run之后的参数替换。
CMD指令的格式和RUN类似,也是两种格式:
a) shell格式:CMD <命令>
b) exec格式:CMD [‘可执行文件’,‘参数1’,‘参数2’…]
c) 参数列表格式:CMD [‘参数1’,‘参数2’…],在指定了ENTRYPOINT指令后,用CMD指定具体的参数。

实例:
CMD ["/bin/bash"]
11、ENTRYPOINT

ENTRYPOINT:指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。
区别:CMD和ENTRYPOINT都是指定一个容器启动时要运行的命令,但是 如果dockerfile中可以有多个CMD指令,只有最后一个生效 ,CMD会被docker run之后的参数替换
;而有多个ENTRYPOINT指令,每个指令都生效,这就是CMD和ENTRYPOINT的区别。

Dockerfile部署springboot项目
# 基础镜像
FROM java:8
# 作者
MAINTAINER honghuayu 111@11.com
#工作目录
WORKDIR /data/dockerfile/
# 把可执行jar包复制到基础镜像的根目录下
ADD dome1.jar dome1.jar
# 镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效
EXPOSE 8099 8098
# 在镜像运行为容器后执行的命令
ENTRYPOINT ["java","-jar"]
#可变的参数
CMD ["dome1.jar"]
执行Dockerfile命令
**docker build -t dome8 -f ./Dockerfile .**
执行后的效果

运行打好的包jdk8

查看web页面的结果

查看打包的镜像

运行打包的包jdk11

运行打包的包jdk17


最终这个springboot项目可以部署到不同的jdk版本上

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4968921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存