dockerfile构建docker镜像详细说明,主要是springboot的jar包构建镜像样例

1.镜像构建命令:docker build

图解

启动命令:(注意最后面有一个点,不要忘记)

docker build -t 自定义镜像名:tag .

执行docker build时,docker server会先把上下文的所有文件都装着起来,然后根据dockerfile文件内容来一条条执行指令来构建镜像警告:

不要用你的根目录下当上下文目录,/作为PATH因为它会导致生成到您的硬盘驱动器的全部内容传输到docker 守护进程。导致服务器宕机

2.初次体验:我的第一个简单样例dockerfile构建docker镜像

1)拉取一个centos镜像

docker pull centos:7

2)创建文件

touch test.txt

3)编写dockerfile文件,内容如下

FROM centos:7

COPY test.txt /

4)构建镜像

docker build -t mycentos1 .

运行结果:(Successfully)

Sending build context to Docker daemon 3.072kB

Step 1/2 : FROM centos:7

---> b5b4d78bc90c

Step 2/2 : COPY test.txt /

---> 0336262a3ff6

Successfully built 0336262a3ff6

Successfully tagged mycentos1:latest

5)查看构建好的镜像:docker images

6)运行镜像:docker run -it mycentos1

镜像的已经存在test.txt,证明COPY test.txt /已经复制到镜像里了

7)完成第一个构建镜像

3.dockerfile文件的指令关键字说明(就是命令)

指令说明都是来自官网

| 指令 | 参数形式 |描述 |

| :----: | :---- |:--- |

| FROM | FROM [--platform=] [:] [AS ] |FROM指令初始化一个新的构建阶段,并为后续指令设置 Dockerfile必须从FROM指令开始。

(推荐)最好从公共存储库中拉出图像开始构建。| | MAINTINER | MAINTAINER |MAINTAINER指令设置生成图像的作者字段

(官网已经不建议使用,改成:LABEL)

| | LABEL | LABEL === ... |标签:LABEL指令将元数据添加到图像。ALABEL是键值对。要在LABEL值中包含空格,请像在命令行分析中一样使用引号和反斜杠。| | RUN | (1)RUN (shell形式,命令在shell中运行,默认情况下/bin/sh -c在Linux或cmd /S /CWindows上运行)

(2)RUN ["executable", "param1", "param2"](执行表格) |执行shell命令、Linux命令、安装命令等| | COPY | COPY [--chown=:] ...

COPY [--chown=:] ["",... ""] |copy和add功能很像,都有把上下文目录资源复制到镜像的功能

copy是对上下文的资源直接复制

add还可以是url,对tar还会自动解压| | ADD | ADD [--chown=:< group >] ...

ADD [--chown=:] ["",... ""] || | ENV | ENV = ...|ENV指令将环境变量设置为value 。此值将在构建阶段的所有后续指令所在的环境中使用,并且在许多情况下也可以内联替换

例如:docker run --env key=value就会替换dockerFile原来定义的环境变量,达到动态设置的功能| | EXPOSE | EXPOSE [/...]

例如:EXPOSE 80/udp |EXPOSE指令通知Docker容器在运行时监听指定的网络端口。您可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认值为TCP。

就是把容器的端口爆露出来,不然容器将不给访问,-p标记ondocker run 发布和映射一个或多个端口,或者使用-P标记发布所有公开的端口并将它们映射到高阶端口。| | VOLUME |VOLUME ["/data"]|挂载卷:VOLUME指令创建具有指定名称的安装点,并将其标记为保存来自本机主机或其他容器的外部安装的卷。

就是把容器的目录能挂载到本地主机上,达到数据保护的作用

例如:docker run -v 本地目录:容器目录,就是把容器目录挂载到本地主机了,然后就可以相互通数据,双向绑定,那边修改都会同步更新,前提就是要dockerfile构建的要先定义好,不然不会生效| | WORKDIR | WORKDIR /path/to/workdir |是对容器进行交互模式时,第一次进来容器的目录落脚点,还有对copy,add也有作用,细看官网说明| | ENTRYPOINT | (1)ENTRYPOINT ["executable", "param1", "param2"]

(2)ENTRYPOINT command param1 param2 |入口点:ENTRYPOINT允许您配置将作为可执行文件运行的容器。一般可以和CMD集合使用| | CMD | (1) CMD ["executable","param1","param2"](exec形式,这是首选形式)

(2) CMD ["param1","param2"](作为ENTRYPOINT的默认参数)

(3)CMD command param1 param2(外壳形式) |CMD指令中只能有一条指令Dockerfile。如果您列出多个,CMD 则只有最后一个CMD才会生效。

如果用户指定的参数,docker run则它们将覆盖中指定的默认参数CMD。|

4.构建springboot的jar镜像

1)前提条件

已经有一个可以运行的springboot的jar包

2)编写dockerfile

# 基于jdk8环境

FROM openjdk:8

# 镜像描述

LABEL version="1.0" \

author="binggoling" \

memo="我的构建第一个springboot的jar,dockerfile文件"

#拷贝jar包到镜像里

COPY springbootdemo-0.0.1-SNAPSHOT.jar app.jar

#创建文件

RUN bash -c "touch /app.jar"

#设置环境变量

ENV xms=128m

ENV xmx=512m

# 挂载目录。这个是我的日志生产的目录

VOLUME /testlog

# 工作目录

WORKDIR /

#暴露端口

EXPOSE 8080

#容器启动时的运行命令

CMD java -Xms$xms -Xmx$xmx -jar /app.jar --server.port=8080

3)构建镜像

docker build -t myjar .

构建结果:

Sending build context to Docker daemon 48.31MB

Step 1/10 : FROM openjdk:8

---> 3d06e674f731

Step 2/10 : LABEL version="1.0" author="binggoling" memo="我的构建第一个springboot的jar,dockerfile文件"

---> Using cache

---> f080ad273539

Step 3/10 : COPY springbootdemo-0.0.1-SNAPSHOT.jar app.jar

---> Using cache

---> f2e7909f5ac4

Step 4/10 : RUN bash -c "touch /app.jar"

---> Using cache

---> 6233753d2e9c

Step 5/10 : ENV xms=128m

---> Using cache

---> f0c98951d24e

Step 6/10 : ENV xmx=512m

---> Using cache

---> 00f882ae0119

Step 7/10 : VOLUME /testlog

---> Using cache

---> 895097ffbabb

Step 8/10 : WORKDIR /

---> Using cache

---> 928fad7a73a7

Step 9/10 : EXPOSE 8080

---> Using cache

---> 2f608ba6e225

Step 10/10 : CMD java -Xms$xms -Xmx$xmx -jar /app.jar --server.port=8080

---> Using cache

---> 09e6c2b3a96e

Successfully built 09e6c2b3a96e

Successfully tagged myjar:latest

查看镜像:docker images

4)启动容器

docker run --name myjar -v /usr/local/docker/make/log:/testlog -p 8085:8080 -d myjar

jar构建docker镜像_dockerfile构建docker镜像详细说明,主要是springboot的jar包构建镜像样例...相关推荐

  1. R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战

    R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战 目录 R使用neuralnet包构建神经网络回归模型并与线性回归模型对比实战 <

  2. 为什么SpringBoot的jar可以直接运行

    本文来说下为什么SpringBoot的 jar 可以直接运行 文章目录 概述 Spring Boot Loader抽象的一些类 JarLauncher的执行过程 自定义的类加载器LaunchedURL ...

  3. docker -v 覆盖了容器中的文件_springboot配合maven打成可执行jar,构建镜像部署到docker容器中...

    本篇文章将介绍springboot应用如何打成jar包,并将jar构建为docker镜像部署到docker中 应用打包 需要配合spring-boot-maven-plugin打包,将以下代码放到应用 ...

  4. Springboot项目多模块打包jar移动到指定目录,docker打jar包构建镜像部署并运行

    环境 springboot:2.7.1 jdk:12 前言 最近想着用docker来部署应用,这就意味着,打jar包时,需要指定打包的位置.并且在每次构建时,能够清除掉旧包,存入新包. 步骤 假设你已 ...

  5. 8s 使用本地打包镜像_在Docker环境构建、打包和运行Spring Boot应用

    为何考虑采用Docker? Docker是提供用户构建镜像的一种容器化技术,所构建的镜像包含了主要的应用程序和运行应用所需的所有依赖项.该镜像可在任何虚拟机或物理机器上的Docker容器上运行.它的强 ...

  6. Docker——Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线

    Dockerfile(构建自己的CentOS镜像和Tomcat镜像)并打包镜像发布上线 Dockerfile概述 Dockerfile构建过程 Dockerfile指令说明 实战:构建自己的CentO ...

  7. Docker最全总结,DockerFile,Docker编排容器,Docker镜像,Docker-compose构建

    文章目录 Docker 简介 为什么使用docker: Docker引擎: Docker系统镜像: Docker容器: Docker仓库: ubuntu安装docker: ubuntu脚本自动安装: ...

  8. 构建属于自己的 jre Docker 镜像

    1. 概述 在实际项目中,有时官方提供的相关 docker 镜像不能满足企业对于镜像内部安全的要求:所以大型的企业都会构建属于企业内部的中间件的 docker 镜像. 2. 基于Alpine 制作 j ...

  9. docker构建、上传、下载镜像

    docker 安装 安装依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里云镜像源 sudo yum-c ...

最新文章

  1. 上周五 oracle,Oracle 获取上周一到周末日期的查询sql语句
  2. oracle sql 执行计划分析_《真正读懂Oracle SQL执行计划》
  3. python精通-干货|Python学习必须精通的几个模块
  4. sql floor 取整函数
  5. Oracle-锁解读
  6. python中deepcopy函数_python – copy.deepcopy使用自定义的__new __()方法在对象上引发TypeError...
  7. 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
  8. leetcode 208 python3
  9. Mysql客户端是不是jdbc_关于JDBC连接MySQL的问题,我一直解决不了(Myeclipse 环境下)...
  10. [文章摘录] Strategies for Early-Stage Collaborative Design (IEEE Software, 2012)
  11. 使用Python调用Netconf进行配置
  12. matlab covar,Matlab功率谱估计
  13. mysql中使用order by 排序时使用if()函数应用场景。
  14. 系统集成项目管理工程师证有什么用处?
  15. 产品思维训练 | 常见的用户增长手段有哪些?
  16. 酷狗音乐QQ显示(VC源码)
  17. 乱七八糟的pwn入门(六)——5.passcode
  18. 马斯克推荐的「50种认知偏差」,这是我见过的最爆笑的解读!
  19. JavaScript连缀
  20. 这5个优质动漫网站,能让你瞬间爆棚,都是满满的干货

热门文章

  1. Django(part4)--练习及re_path方法
  2. python观察日志(part16)--收集关键词参数
  3. R语言观察日志(part1)--subset函数
  4. 总算是把用户流失分析讲清楚了!
  5. 你知道 Sql 中 left join 的底层原理吗?
  6. 张俊红22岁年度总结
  7. 如何生成 jMeter 结果分析统计图表
  8. 零基础 ABAP 学习教程系列文章的目录
  9. 如何使用 ABAP 报表将 ABAP 服务器上的 SAP UI5 应用下载到本地
  10. SAP S/4HANA 的30天免费试用版