FROM

功能为指定基础镜像,并且必须是第一条指令。 如果不以任何镜像为基础,那么写法为:FROM scratch。 同时意味着接下来所写的指令将作为镜像的第一层开始。

语法

  1. #三种写法,其中<tag>和<digest> 是可选项,如果没有选择,那么默认值为latest
  2. FROM <image>
  3. FROM <image>:<tag>
  4. FROM <image>:<digest>

LABEL

功能是标识作者版本 等等类似注释

  1. LABEL maintainer="liulewei <lewei.liu@email.com>"

WORDDIR

切换目录 注意点:

  1. 用WORDDIR 不要用run cd
  2. 尽量使用绝对路径
  1. WORKDIR /test # 如果没有则会自动创建test目录
  2. WORKDIR demo
  3. RUN pwd #则会输出 /test/demo

RUN

功能是运行指定的shell命令 注意 只使用一个run 因为每个run都会在docker 容器中形成一层,如果执行文件多可以使用\换行。

语法

  1. # 存在两种写法
  2. # 执行指定的shell命令
  3. # 1.RUN <command>
  4. RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'
  5. # 执行executable函数 后面是函数的两个参数
  6. # 2.RUN ["executable", "param1", "param2"]
  7. RUN ["/bin/bash", "-c", "echo hello"]

CMD

语法

  1. CMD ["executable","param1","param2"]
  2. CMD ["param1","param2"]
  3. CMD command param1 param2

CMD和RUN的区别

run是构筑容器时执行的命令。 cmd是容器启动时执行的命令。

ENTRYPOINT

指定程序的入口 ENTRYPOINT 只能存在一个

  1. ENTRYPOINT ["usr/bin/redis-server"]

MAINTAINER

为镜像指定作者

语法

  1. MAINTAINER <name>

EXPOSE

功能为暴漏容器运行时的监听端口给外部 但是EXPOSE并不会使容器访问主机的端口 如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -P参数

ENV

功能为设置环境变量

语法

  1. ENV MYSQL_VERSION 5.6

ADD&&COPY

add和copy: 一个复制命令,把文件复制到镜像中。 add 有一些其他功能(解压) 大部分情况,copy优于add 添加远程文件/目录 请使用 run curl/run wget

语法

  1. ADD hello / # 将当前目录下的hello 拷贝到镜像中的根目录
  2. ADD test.tar.gz / #添加到根目录并解压

未完待续