转载: http://blog.csdn.net/wsscy2004/article/details/25878223
http://www.tuicool.com/articles/r6BZruu
FROM
基于那个镜像文件
MAINTAINER
镜像创建者信息
CMD 容器启动时执行的命令 一个dockerfile只能有一条cmd指令,如果多条只执行最后一条CMD指令,并且 docker run 时候 写上cmd 指令就会覆盖掉dockerfile的cmd指令 ENTRYPOINT 容器启动时时候执行的命令,一个dockerfile只能有一条ENTYRPOINT指令,如果多条只会执行最后一条指令
并且不存在CMD的可替换性
该指令的使用分为两种情况,一种是独自使用,另一种和CMD指令配合使用。
当独自使用时,如果你还使用了CMD命令且CMD是一个完整的可执行的命令,那么CMD指令和ENTRYPOINT会互相覆盖只有最后一个CMD或者ENTRYPOINT有效
比如:
# CMD指令将不会被执行,只有ENTRYPOINT指令被执行
CMD echo “Hello, World!”
ENTRYPOINT ls -l
另一种用法和CMD指令配合使用来指定ENTRYPOINT的默认参数,这时CMD指令不是一个完整的可执行命令,仅仅是参数部分。ENTRYPOINT指令只能使用JSON方式指定执行命令,而不能指定参数。
USR
使用哪个用户跑container
EXPOSE
容器内部服务开启的端口,主机上想要访问需要做端口映射
ENV
设置环境变量
例如 ENV JAVA_HOME /usr/local/java
ADD
ADD <src> <dest> 从src 复制文件到container的dest 目录 (COPY)
如果 src 是压缩文件会自动解压缩到container的dest 目录下面,如果src 是文件,dest 没有以/ 结尾,则认为dest 也是文件
会将src文件的内容写入到dest中,如果src是文件,dest以/结尾,将文件复制到dest目录下面
src 是相对于构建目录的相对路径,可以是文件和目录,dest 则是container绝对路径
VOLUME
设置指令,使容器中的一个目录具有持久化存储数据的功能,改目录可以被容器本身使用,也可以共享给其他容器使用。
WORKDIR
切换目录相当于CD, 对 RUN,ENTRYPOINT,CMD有效,例如 WORKDIR /P1 WORKDIR /P2 RUN vim a.txt
ONBULID
ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行