Dockerfile命令详解

docker安装
Centos下 安装docker并搭建自己的docker仓库

Windows 下docker 的安装

什么是Dockerfile
Dockerfile是描述镜像的构建过程的文件,,文本内容包含了一条条构建镜像所需的指令和说明。

Dockerfile的常用指令说明
FROM

FROM 表示构建镜像的基础镜像,

语法格式:FROM [–platform=] [:] [AS ]
eg. FROM ubuntu:latest
MAINTAINER

MAINTAINER 表示此docker镜像维护者的信息

语法格式:MAINTAINER
RUN

RUN 用于执行命令操作,通常用来配置镜像所需的环境

RUN 有2种语法格式

RUN 这种格式为shell格式,等于直接在shell中运行
RUN [“executable”,“param1”,“param2”] 这种格式用于指定特定的可执行文件,并指定参数;
eg.RUN [“java”,"-jar"]
CMD

CMD 有三种执行模式

CMD command param1 param2 这中写法是 shell 模式
CMD ["‘param1’",“param2”] 这种写法是为 ENTRYPOINT 指令指定的程序提供默认参数
CMD [“executable”,“param1”,“param2”] 指定特定的可执行文件,并指定参数执行
如果一个Dockerfile中存在多个CMD指令的话,只有最后一个会生效

CMD 与 RUN的区别
二者的执行阶段不同:CMD 实在容器run阶段的时候执行的,RUN命令是在Dockerfile build的阶段执行的

CMD指令的指定的程序可以被docker run 语句中指定的参数替换

LABEL

LABEL 指令用于给镜像添加元数据

语法格式: LABEL = = = …
EXPOSE

语法格式: EXPOSE [/…]
EXPOSE 指令用来声明镜像暴露的端口,仅仅只是声明端口,并不会直接映射端口,如果在 docker run container 的时候随机端口映射的话,会优先使用 EXPOSE 暴露的端口。

ENV

ENV 指定用来设置环境变量,类似于在系统定义变量,在后续的系统的可以使用声明的环境变量

语法格式: ENV = …
ADD

ADD指令用来从上下文目录中复制文件到容器的指定路径

语法格式: ADD [–chown=:] …
COPY

COPY 指令,从上下文目录中复制文件或者目录到容器里指定路径

语法格式: COPY [–chown=:] …
ADD与COPY 的区别
*ADD与COPY 指令都可以将文件资源移动到容器之中,

ADD 指令可以用来从网络中获取资源,COPY只能复制宿主机的文件
ADD 指令如果拷贝的资源是一个可识别的压缩格式的话,会自动解压文件
ADD像是一个加强的版的COPY指令,但是实际使用中比较少,在获取网络资源时,通常用RUN指令代替ADD
ENTERPOINT

与CMD程序类似,但是不会被docker run 语句中的参数覆盖,而这些参数会作为ENTERPOINT的参数执行,

如果docker run 中使用了 --enterpoint 选项,那么将覆盖CMD指令指定的程序

ENTRYPOINT [“executable”, “param1”, “param2”]
ENTRYPOINT command param1 param2
当 ENTRYPOINT 与 CMD 同时给出时,CMD 中的内容会作为 ENTRYPOINT 定义命令的参数,最终执行容器启动的还是 ENTRYPOINT 中给出的命令。

ARG

用于在进行docker build 的时候进行传参

语法格式:ARG [=]
VOLUME

定义匿名数据卷,在容器启动的时候,没有指定挂在的数据卷,就会自动挂载到定义的匿名数据卷上

VOLUME ["/data"]
USER

USER指令设置运行镜像时使用的用户名(或UID)和可选的用户组(或GID),以及Dockerfile中跟随它的任何RUN、CMD和ENTRYPOINT指令执行时需要的用户。

语法格式:USER [:] 或者 USER [:]
WORKDIR

WORKDIR
WORKDIR指令为Dockerfile中跟随它的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR指定的目录不存在,会被自动创建。

HEALTHCHECK

用于指定某个程序或者指令来监控docker容器的运行状态

语法格式:
HEALTHCHECK [OPTIONS] CMD command # 设置容器健康检查的命令
HEALTHCHECK NONE #屏蔽基础镜像中的健康检查
ONBUILD

用于依赖构建,ONBUILD指令的后的命令在本次的构件中不会生效,在以当前的镜像为基础镜像时构建新的镜像时才会执行

语法格式:ONBUILD

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值