Dockerfile 命令
-
FROM
基于什么基础镜像做操作,Dockerfile第一行必须为FROM,如果使用Dockerfile创建多个镜像时,可使用多个From指令(每个镜像一次)示例: FROM centos FROM centos:latest
-
MAINTAINER
指定作者信息示例: MAINTAINER*********
-
RUN
镜像操作指令示例: RUN yum install httpd -y ###在创建的容器中安装httpd RUN ["/bin/bash","-c","echo hello"]
-
CMD
只能用来指定容器启动时用到的命令,所以只能有一条. docker run 覆盖 CMD三种格式: CMD ["executable", "param1", "param2"] CMD command param1 param2 CMD ["param1", "param2"] 示例: CMD ["/bin/bash", "/usr/local/nginx/sbin/nginx", "-c", "/usr/local/nginx/conf/nginx.conf"]
-
EXPOSE
用来暴露指定的容器端口格式: EXPOSE <port> [<port>...] 示例: EXPOSE 800 ###暴露启动容器的800端口,映射到本机的就是随机端口 ### 启动容器时指定-P,默认将容器的800映射到本机的随机端口 ### 启动容器时指定-p 800:800,将容器映射到本机的800端口
-
ENV
定义环境变量,主要是为后续的RUN提供环境变量格式: ENV <key> <value> 示例: ENV PATH /usr/local/mysql/bin:$PATH 自己定义环境变量: ENV MYSQL_version 5.6
-
ADD
可以将本地的文件或目录copy到容器的某个目录,支持URL格式: ADD <src> <dest> 示例: ADD </conf/vhosts> </usr/local/nginx/conf>
-
COPY
可以将本地的文件或目录copy到容器的某个目录,不支持URL格式: COPY <src> <dest> 示例: COPY httpd.conf /etc/httpd/conf/httpd.conf
-
ENTRYPOINT
类似CMD,只有一条生效,如果写多条则最后一条生效. docker run 不能覆盖ENTRYPOINT,并且ENTRYPOINT优先级较高示例: 容器的名字为test,Dockerfile中指定CMD: CMD ["/bin/echo","testOne"] 启动容器的命令是docker run test 这样会输出testOne; 假如容器启动的命令是docker run -it test /bin/bash 则什么都不会输出,因为 /bin/bash 把 /bin/echo testOne 给覆盖了。 而ENTRYPOINT则不会被覆盖,并且会比CMD或docker run指定的命令靠前执行 ENTRUPOINT ["echo","testOne"] docker run -it test 123 则会输出testOne 123,这相当于要执行命令echo testOne 123
-
VOLUME
指定挂载点格式: VOLUME ["/data"]
VOLUME命令将创建一个可以从本地主机或其他容器挂载的挂载点,与-v选项是一样的
-
USER
指定运行容器的用户格式: USER daemon
-
WORKDIR
指定命令的工作目录格式: WORKDIR /path/to/workdir
为后续的RUN、CMD或者ENTRYPOINT执行的命令指定一个工作目录.