Dockerfile命令集

这篇具有很好参考价值的文章主要介绍了Dockerfile命令集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是Dockerfile

1.1 Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

制作镜像的Dockerfile文件所在的目录为dockerfile的上下文环境。

1.2 docker build命令


docker build的使用

docker build -t [imagename:tag] [filepath]
docker build:构建镜像,-t 指定image的name和版本,指定构建镜像的Dockerfile文件。

如果当前上下文内的Dockerfile文件名就是Dockerfile,在构建镜像的时候,命令如下
dcoker build -t mycentos:01 . 
-t mycentos:表示构建的image名字为mycentos,并且指定版本为01
【 . 】 :最后的一个 点 表示指定当前上下文中的文件名为Dockerfile文件【如果是其他文件,指定文件名】

1.3 Dockerfile相关指令描述

保留字 作用
FROM 当前镜像是基于哪个镜像[第一个指定必须是FROM]
MANITAINER 维护者的姓名和邮箱地址[废弃,意义不大]
RUN 构建镜像是需要运行的指令
EXPOSE 当前容器对外 暴露的端口号
WORKDIR 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV 用来在构建镜像的过程中设置环境变量
ADD 将宿主机目录下的文件拷贝进容器且ADD命令会自动处理URL和解压tar包
COPY 类似于ADD,拷贝文件和目录到镜像中 将从构建上下文目录中<原路径>的文件/目录复制到新的一层镜像内的<目标路径>位置
VALUME 容器数据卷,用户数据保存和持久化工作
CMD 指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT 指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动过程及其参数

2.Dockerfile命令详情

2.1 FROM命令

  • 基于哪个基础镜像进行构建新的镜像,在构件时会自动从docker hub拉取base进行,必须作为Dockerfile的第一个指令出现
  • 语法
FROM <image>
FROM <image>[:tag]       使用最新版本不写为latest 
FROM <image>[@<digest>]  使用摘要

注意:

构建的docker镜像,如果没有服务,在运行为容器之后,会立刻结束进程。
如果有服务在镜像运行为容器之后一直运行[阻塞系统进程],则容器不会在启动后结束进程。
在image没有服务的情况下,启动为容器,会在容器启动后结束进程。
如果想进入容器,只能在启动容器的时候加上[-it],会在容器运行之后,直接进入容器内部。
其他情况同样适用,只要是在image启动为容器后直接进入容器内部,都可以使用该方法。

2.2 RUN命令

  • RUN指令将在当前镜像智商的新层中自行任何命令并提交结果,生成的提交镜像将用于Dokcerfile中的下一步
  • 简单来说,就是构建镜像时执行的命令,或者shell脚本
  • 语法
# 语法一,在RUN 后面直接写shell脚本
RUN <command> 
#例句
RUN echo hello

#语法二,使用json格式[更像是string数组,将一条命令拆分为一个string数组]
RUN ["executable","param1","param2"]
#例句
RUN ["/bin/bash","-c","echo hello"]

2.3 EXPOSE命令

  • 用来指定构建的镜像运行为容器时对外暴露的端口
  • 语法
EXPOSE 80/tcp       如果没有显示指定则默认暴露都是TCP
EXPOSE 80/udp

2.4 CMD命令

  • 用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令,如果列出多个命令,则只有最后一个命令才会生效。
  • 注意:Dockerfile中只能有一条CMD指令。如果列出多个指令,则只有最后一个命令才会生效
  • 容器启动的时候,也就是在docker run命令的最后,如果输入一条指令,将会覆盖Dockerfile中的CMD命令
  • 如果Dockerfile中没有CMD指令,那么在Docker run的时候,最后加入一条指令,可能会报错【不确定】
  • 语法:
CMD ["executable","param1","param2"]  (exec from,this is the preferred form)
CMD ["param1","param2"]               (as default parameters to ENTRYPOINT)
CMD command param1 param 2            (shel from)

2.5 WORKDIR命令

  • 用来为Dockerfile中的任何RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录,如果WORKDIR不存在,即使他没有在任何后续Dokcerfile指令中使用,它也将被创建
  • 语法
WORKDIR /path/to/workdir

#例句
WORKDIR /a
WORKDIR b
WORKDIR /root/home/opt

注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前的WORKDIR路径相对

2.6 ENV命令

  • 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。
  • 语法
ENV <key> <value>
ENV <key>=<value> ... 


注意:在dockerfile中其他地方引用ENV定义的环境变量,可以使用$key来使用
例如:定义一个路径,在WORKDIR命令中引用
ENV BASE_DIR=/data/opt
WORKDIR $BASE_DIR

2.7 ADD命令

  • 用来从context上下文复制新文件、目录或者远程文件URL,并将它们添加到位于指定路径的镜像文件中
  • ADD命令如果是从宿主机上复制压缩文件到镜像,会自动解压缩
  • ADD命令可以自动下载URL远程文件,但是下载的文件不能自动解压缩
  • 语法:
ADD hom* /mydir                     通配符添加多个文件
ADD hom?.txt /mydir                 通配符添加[?站位一个字符]
ADD test.txt  /relativeDir/         可以指定相对路径
ADD test.txt /absoluteDir/          可以指定绝对路径
ADD url

2.8 COPY命令

  • 用来将context目录中指定文件复制到警醒的指定目录中
  • 语法:
COPY src dest
COPY ["<src>",...,"<dest>"]

2.9 VALUME命令

  • 用来定义容器运行时可以挂载到宿主机的目录
  • 语法
VALUME ["/data"]

3 Dockerfile打包SpringBoot项目

3.1 创建一个简单的SpringBoot项目

省略创建SpringBoot应用

3.2 将SpringBoot应用通过maven打包成jar包
3.3 将jar包上传到Dockerfile所在的上下文目录
3.4 编写Dockerfile文件文章来源地址https://www.toymoban.com/news/detail-471028.html

# 基于jre8镜像
FROM openjdk:8-jre 

#工作目录,在这里定义工作目录,下面所有的操作都是基于当前目录[目录不存在时,Dockerfile会地总创建]
WORKDIR /app  

#将Dockerfile上下文目录中的SpringBoot应用jar包拷贝到镜像的工作目录
ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar 

#容器可以向外暴露的端口
EXPOSE 8080

#镜像启动为容器时需要执行的命令,ENTRYPOINT 为必须要执行的命令
ENTRYPOINT ["java","-jar"]

#CMD的参数可以在镜像运行的时候被替换掉,并且成为ENTRYPOINT命令的参数
CMD ["app.jar"]

到了这里,关于Dockerfile命令集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FFmpeg的一些命令集

    获取视频的信息 ffmpeg -i video.avi 将图片序列合成视频 ffmpeg -f image2 -i image%d.jpg video.mpg 上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等…)合并成 video.mpg 将视频分解成图片序列 ffmpeg -i video.mpg image%d.jpg 上面的命令会生成 image1.jpg. image2.jpg. … 支持的图片格式

    2024年02月12日
    浏览(40)
  • 简单整理FFmpeg相关命令集

    简单整理了FFmpeg相关命令,主要包括ffplay播放控制和媒体播放命令、ffmpeg命令相关参数以及常用的提取音视频等命令。 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解

    2024年01月16日
    浏览(77)
  • 【Redis】Redis基础命令集详解

    一、基础命令 1、ping(心跳命令) 键入ping命令,若看到PONG响应,则说明客户端与Redis的连接时正常的。 2、get/set(读写键值命令) set key value 会将指定 key-value 写入到DB。 get key 则会读取指定key的value值。 3、select(切换数据库) redis默认有 16 个数据库。这个在 Redis Desktop M

    2023年04月18日
    浏览(48)
  • git常用命令集合及其演示

    表示有一个文件test1.txt被修改过内容,test3.txt没有被加载到暂存区里 当前作为第一个版本 假设修改了test3.txt里面的内容 表示有个文件发生变化,git add添加到暂存区, commit之后暂存区会清空的, 添加有个p2版本 回滚后 删除的文件也可以通过git回滚 在dev分支提交版本 commit之

    2024年01月17日
    浏览(52)
  • npm yarn pnpm 命令集

    安装依赖 安装某个依赖 安装到全局(dependencies) 安装到线下(devDependencies) 卸载某个依赖 卸载全局依赖 清除npm缓存 如果清除缓存报禁止--force错误 可以使用以下这条 安装pnpm 打开CMD命令行 输入 查看版本号 安装依赖 安装某个依赖 删除某个依赖 更新所有依赖 更新某个依赖

    2024年02月12日
    浏览(57)
  • 【Git】git常用命令集合

      Git是现代软件开发不可或缺的版本控制工具,它可以追踪文件的变化、协同开发以及管理代码版本。掌握Git的常用命令对于开发人员来说至关重要。本文将为你介绍一些Git常用命令,帮助你轻松驾驭版本控制。   详细介绍了Git的常用命令,涵盖了版本管理、分支操作、

    2023年04月08日
    浏览(69)
  • Linux命令集(Linux文件管理命令--rm指令篇)

    如下为笔者总结出在 linux 中最常用的 rm 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 删除文件或目录 短选项 长选项 描述 -f --force 忽略不存在的文件,不给出提示 -i --interactive 进行交互式删除操作,删除前逐一询问确认 -r --recursive 将指定目录及其子目录递归删除 -v --

    2024年02月01日
    浏览(56)
  • Linux命令集(Linux文件管理命令--rmdir指令篇)

    如下为笔者总结出在 linux 中最常用的 rmdir 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 删除空目录 短选项 长选项 描述 -p --parents 递归删除父目录中不包含子目录或文件的空目录,同时删除父目录 -v --verbose 显示当前删除目录 -- --ignore-fail-on-non-empty 忽略非空目录删除失败

    2024年02月02日
    浏览(50)
  • Linux命令集(Linux文件管理命令--mv指令篇)

    如下为笔者总结出在 linux 中最常用的 mv 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 移动或重命名文件或目录 短选项 长选项 描述 -b -- 在执行覆盖前,为目标文件创建一个备份 -f --force 不提示用户直接强制覆盖目标文件而进行操作 -i --interactive 如果目标文件已经存在,

    2024年02月02日
    浏览(58)
  • Linux命令集(Linux文件管理命令--CP指令篇)

    如下为笔者总结出在 linux 中最常用的 CP 指令集 🌟希望能够帮助正在Linux路上奋斗的你🌟 复制文件或目录 短选项 长选项 描述 -a --archive 复制文件或目录,保留链接、文件属性,并复制目录下的所有内容;等同于 -dpR 参数组合 -b --backup=CONTROL 创建备份文件,若目标文件已经存

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包