1. 基础指令
FROM
FROM <image>
FROM <image:tag>
FROM <image@digest>
- 必须是第一个指令,指定从哪个基镜像继承。
- FROM可以出现多次,用于创建多个镜像。
- tag和digest是可选的。tag默认为latest。
MAINTAINER
MAINTAINER <name>
设置镜像的作者
RUN
RUN指令有两种格式
RUN <command>,shell格式,command运行在shell中,
RUN [“executable”,”param1”,”param2”] exec格式。
CMD
CMD有三种格式
CMD command param1 param2 (shell form)
CMD ["executable","param1","param2"] (exec form, this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
LABEL
LABEL定义镜像的元数据。
LABEL <key>=<value> <key>=<value> <key>=<value> ...
LABEL "com.example.vendor"="ACME Incorporated"
ABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
最终的配置结果可以通过docker inspect中查看。
EXPOSE
EXPOSE <port> [<port>...]
暴露容器的端口,需要使用-P来访问。
ENV
ENV <key> <value>
ENV <key>=<value>
设置环境变量,在容器内保持。影响范围是容器域。
eg:
ENV myName John Doe
ENV myDog Rex The Dog
ADD
ADD <src>... <dest>
ADD ["<src>",... "<dest>"]
ADD指令,从
eg:
ADD hom* /mydir/ # adds all files starting with "hom"
ADD hom?.txt /mydir/ # ? is replaced with any single character, e.g., "home.txt"
ADD test relativeDir/ # adds "test" to `WORKDIR`/relativeDir/
ADD test /absoluteDir/ # adds "test" to /absoluteDir/
COPY
COPY <src> … <dest>
复制本机的
当使用本地目录作为源目录是,建议使用COPY指令
ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"] (exec form, preferred)
ENTRYPOINT command param1 param2 (shell form)
配置容器启动后执行的命令,并且不可被docker run指定的参数覆盖。
VOLUME
VOLUME [“/data”]
创建一个挂载点。
USER
USER daemon
指定用户名或者UID。
WORKDIR
WORKDIR /path/to/workdir
为后续的指令配置工作目录
可以使用多次
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
则最终路径为/a/b/c