dockerFile指令

dockerFile是用来构建镜像的文本文件,文本内容包含了构建镜像需要的各种指令,一个命令是就是镜像的一层

DockerFile的基本指令

  • FROM

镜像起始的基础镜像,后续命令的操作都是基于这个镜像来操作的
例子:
FROM java:8
以java8为基础镜像

  • RUN

在构建过程中在镜像中执行命令,在 docker build时执行
格式 1: RUN <命令行命令>
<命令行命令>等同于在linux 操作的shell命令
格式2:RUN [ “可执行文件”,“参数1”,“参数2”,“参数3”]

  • MAINTAINER

指定作者(已弃用,推荐LABEL)

  • LABEL

添加镜像的元数据,使用键值对的形式
LABEL <键>=<值> <键>=<值> <键>=<值> …
例子:
LABEL authors=“test01”

  • CMD

指定容器创建时的默认命令(可以被覆盖),在docker run 时运行,如果存在多个 CMD 指令,仅最后一个生效
格式 1:CMD <shell命令>
格式 2:[“<可执行文件或命令>”,“<参数一>”,“<参数二>”]
格式 3:[“<参数一>”,“<参数二>”,…] 这种写法是为ENTRYPOINT指令指定的程序提供默认参数

  • ENTRYPOINT

设置容器创建时的主要命令(不可被覆盖)。类似于CMD命令但其不会被docker run的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给ENTRYPOINT指令指定的程序。如果在docker run时使用了–entrypoint 选项,将覆盖ENTRYPOINT指令指定的程序
格式: ENTRYPOINT [“<执行程序>”,“<参数一>”,“<参数二>”,…]
//---------------------------------------------------------------
例子 1
nginx:test镜像的Dockerfile 中命令如下
FROM nginx
ENTRYPOINT [“nginx”, “-c”] # 定参
CMD [“/etc/nginx/nginx.conf”] # 变参

  1. 在控制台运行nginx的镜像(不带参数运行)
    docker run nginx:test
    容器内默认会运行如下命令,启动nginx (即CMD的参数传递给了ENTRYPOINT)
    nginx -c /etc/nginx/nginx.conf
  2. 在控制台运行nginx的镜像(带参数运行)
    docker run nginx:test -c /etc/nginx/new.conf
    容器内会默认运行一下命令,启动nginx(即接受命令行的参数)
    nginx -c /etc/nginx/new.conf
  • EXPOSE

声明容器运行时监听的特定网络端口,即申明容器内的端口,以方便映射,可以申明多个端口
格式: EXPOSE <端口>
例子: 如下同时申明两个端口
EXPOSE 80
EXPOSE 443

  • ENV

在容器内部设置环境变量
格式: ENV <键> <值>
例子:
ENV PARAM 89
RUN curl localhost:3390/get$PARAM $PARAM为获取之前定义的值

  • ADD

将文件、目录或远程URL复制到镜像中
与COPY的使用类似。同样需求,推荐使用COPY
优点:在执行《源文件》为tar压缩文件,压缩格式为gzip,bzip2,以及xz的情况下,会自动复制并解压到《目标路径》
缺点:在不解压的情况下,无法复制tar压缩文件。会另镜像构建缓存失效,从而惠玲镜像构建变得缓慢。

  • COPY

将文件或目录复制到镜像中
例子: COPY demo01.jar /home/test/demo01.jar
把本地当前文件夹中的demo01.jar 复制到镜像中的 /home/test目录中,容器中的目录不存在会自动创建

  • VOLUME

为容器穿件挂载点或声明卷
格式1:VOLUMN [“<路径一>”,“<路径二>”] #挂载多个
格式2:VOLUMN <路径一> #挂载单个
在启动容器时候没有用-v 参数挂载dockerfile中指定的数据卷,会自动挂载到匿名卷中

  • WORKDIR

设置后续指令的工作目录

  • USER

指定后续指令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)
格式:USER <用户名>[:<用户组>]

  • ARG

定义在构建过程中传递给构建器的变量,可使用"docker build"命令设置
格式: ARG <键> [=<值>]
与ENV作用一致。作用域不同,仅在dockerfile里面有效,当docker build执行完了就销毁了,构建好的容器内不会存在这个变量 。而且在docker build 时如果使用 --build-arg <参数名>=<值> ,会覆盖Dockerfile中的值

  • ONBUILD

当该镜像被用作另一个构建过程的基础时,添加触发器

  • STOPSIGNAL

设置发送给容器以退出的系统调用信号

  • HEALTHCHECK

定义周期性检查容器健康状态的命令。即用于指定某个程序或者指令来监控 docker 容器服务的运行状态
格式
HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令

HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。

  • SHELL

覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值