FROM
功能为指定基础镜像,并且必须是第一条指令。 如果不以任何镜像为基础,那么写法为:FROM scratch。 同时意味着接下来所写的指令将作为镜像的第一层开始。
语法
#三种写法,其中<tag>和<digest> 是可选项,如果没有选择,那么默认值为latestFROM <image>FROM <image>:<tag>FROM <image>:<digest>
LABEL
功能是标识作者版本 等等类似注释
LABEL maintainer="liulewei <lewei.liu@email.com>"
WORDDIR
切换目录 注意点:
- 用WORDDIR 不要用run cd
- 尽量使用绝对路径
WORKDIR /test # 如果没有则会自动创建test目录WORKDIR demoRUN pwd #则会输出 /test/demo
RUN
功能是运行指定的shell命令 注意 只使用一个run 因为每个run都会在docker 容器中形成一层,如果执行文件多可以使用\换行。
语法
# 存在两种写法# 执行指定的shell命令# 1.RUN <command>RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME'# 执行executable函数 后面是函数的两个参数# 2.RUN ["executable", "param1", "param2"]RUN ["/bin/bash", "-c", "echo hello"]
CMD
语法
CMD ["executable","param1","param2"]CMD ["param1","param2"]CMD command param1 param2
CMD和RUN的区别
run是构筑容器时执行的命令。 cmd是容器启动时执行的命令。
ENTRYPOINT
指定程序的入口 ENTRYPOINT 只能存在一个
ENTRYPOINT ["usr/bin/redis-server"]
MAINTAINER
为镜像指定作者
语法
MAINTAINER <name>
EXPOSE
功能为暴漏容器运行时的监听端口给外部 但是EXPOSE并不会使容器访问主机的端口 如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -P参数
ENV
功能为设置环境变量
语法
ENV MYSQL_VERSION 5.6
ADD&©
add和copy: 一个复制命令,把文件复制到镜像中。 add 有一些其他功能(解压) 大部分情况,copy优于add 添加远程文件/目录 请使用 run curl/run wget
语法
ADD hello / # 将当前目录下的hello 拷贝到镜像中的根目录ADD test.tar.gz / #添加到根目录并解压
