当前位置: 首页 > article >正文

Dockerfile常用指令

通过Dockerfile构建镜像

使用docker build命令通过Dockerfile和构建上下文(build context)构建镜像

构建上下文是由文件路径(本地文件系统上的目录)或一个URL(Git仓库位置)定义的一组文件

构建上下文以递归方式处理,这样本地路径包括其中的任何的子目录,URL包括仓库及其子模块

一个使用当前目录作为上下文的简单构建命令:

docker build .

按照习惯,将Dockerfile文件直接命名为“Dockerfile”,并置于构建上下文的根位置,不然,需要使用-f选项显式指定Dockerfile文件的具体位置:

docker bulid -f /path/to/a/Dockerfile

可以指定构建之后要保存的新镜像的仓库名和标签

docker build -t shykes/myapp . 

Dockerfile常用指令 

FROM指令--设置基础镜像

FROM指令支持由ARG指令声明的变量,ARG指令应置于第一条FROM指令的前面

RUN指令--运行命令

RUN <command>   #shell格式,命令在shell环境中运行,

RUN ["executable","param1","param2"]  #exec模式

 RUN指令将在当前镜像顶部的新层中执行命令,并提交结果

CMD指令--指定容器启动时默认执行的命令

CMD ["executable","param1","param2"]   #exec格式

CMD ["param1","param2"]  #提供给ENTRYPOINT指令的默认参数

CMD command1 parame1 param2  #shell格式

LABEL指令--向镜像添加标记(元数据)

 LABEL <key>=<value> <key>=<value> <key>=<value>...

EXPOSE指令--声明容器运行时侦听的网络端口 

EXPOSE <port> [<port>...]

可以指定TCP或者UDP端口,默认是TCP端口

ENV指令--指定环境变量

ENV <key> <value>

ENV <key>=<value>...

COPY指令--将源文件复制到容器 

COPY [--chown=<user>:<group>] <src>...<dest>

COPY [--chown=<user>:<group>] ["<src>",..."<dest>"]

ADD指令--将源文件复制到容器 

ADD [--chown=<user>:<group>] <src>...<dest>

ADD [--chown=<user>:<group>] ["<src>",..."<dest>"] 

与COPY有两点不同:源可以使用URL指定    归档文件在复制过程中能够被自动解压缩

ENTRYPOINT指令--配置容器的默认入口 

ENTRYPOINT command param1 param2   #shell格式,命令在shell环境中运行,

ENTRYPOINT ["executable","param1","param2"]  #exec模式

VOLUME指令--创建挂载点 

VOLUME ["/data"]

WORKDIR指令--配置工作目录 

WORKDIR /path/to/workdir

USER指令--设置运行镜像时使用的用户名 

USER <user> [:<group>] or

USER <UID> [:<GID>]

ARG指令--定义变量 

ARG <name> [=<default value>]

SHELL指令--指定命令的shell格式 

SHELL ["executable","parameters"]

用于指定命令的shell格式以覆盖默认的shell

SHELL指令必须以JSON格式写在Dockerfile中

创建基础镜像

使用Tar归档文件创建完整的镜像

使用scratch镜像创建简单的父镜像

FROM scratch指令会通知构建进程,让Dockerfile中的下一条命令成为镜像中的第一个文件系统层

使用多阶段构建

可以在Dockerfile中使用多个FROM指令,每个FROM指令可以使用不同的基础镜像,并且各自分别开始一个新的构建阶段


http://www.kler.cn/a/412267.html

相关文章:

  • 【ArcGISPro】使用AI提取要素-土地分类(sentinel2)
  • CUDA补充笔记
  • Oracle-表分区(范围分区、列分区、Hash分区、嵌套分区、自动扩展分区)
  • Day 27 贪心算法 part01
  • python3 自动更新的缓存类
  • uniapp-vue2引用了vue-inset-loader插件编译小程序报错
  • 【Go语言成长之路】编写web应用
  • 深入解读 MongoDB 查询耗时:Execution 和 Fetching 阶段详解
  • BERT的中文问答系统36-1
  • 文件的处理(c语言)
  • BP神经网络的训练窗口详解,BP神经网络详细原理,基于BP神经网络的多分类预测
  • Ubuntu20.04运行DM-VIO
  • Jmeter的组件执行顺序
  • mongodb shard 分片集群基础概念
  • Linux的make/Makefile和进度
  • vueuse中的useTemplateRefsList
  • Python中的23种设计模式:详细分类与总结
  • 【Angular】async详解
  • MATLAB矩阵元素的修改及删除
  • Android.mk的变量有哪些
  • Js引入方式-01
  • 【C 语言】深入剖析双指针法实现字符串反转
  • Pytorch使用手册-Automatic Differentiation with torch.autograd(专题六)
  • Vue2学习记录
  • 目录 《Qt精通之路》
  • 离线状态下引入Echarts