docker - dockerfile指令

FROM

指定基础镜像,也就是作为父镜像,FROM <镜像名:tag>,如FROM nginx

MAINTAINER

说明镜像维护者的信息,MAINTAINER <作者> <邮箱>

RUN

镜像构建中执行的命令(docker build),RUN <command>,如RUN sudo apt-get update && sudo apt-get install -y nginx

CMD

和RUN命令用法一致,RUN是在镜像构建中执行命令,CMD是在容器运行时执行命令(docker run),如果在docker run时指定了需要执行的命令,则会覆盖CMD

ENTRYPOINT

ENTRYPOINT和CMD非常相似,都是在容器运行时执行命令,但是在docker run时指定了需要执行的命令,不会覆盖CMD,除非指定了--entrypoint参数,每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效

EXPOSE

指定需要映射的端口,EXPOSE <port> [<port> ...],如EXPOSE 80 443

ADD

复制文件到docker容器中,ADD <src> <dest>,src可以是URL,如果src是tar压缩包会自动进行解压缩

COPY

COPY和ADD相似,COPY只能复制文件和文件夹

VOLUME

可以将本地文件夹挂载到container中,如VOLUME /dataVOLUME /datadocker run -v /data是等价的,需要说明的是使用-v参数的时候可以指定宿主机挂载到容器中目录位置(即-v /data:/data),而使用VOLUME是无法做到的。关于对VOLUME的深入理解可以参考这篇博文 深入理解 Docker Volume

WORKDIR

设置工作目录,RUN,CMD和ENTERPOINT在该工作目录下执行,可以将WORKDIR理解为cd命令,如WORKDIR ~/website

ENV

指定环境变量,如ENV DB_HOST 127.0.0.1

USER

指定用户,USER <用户名或用户ID>:<组名或组ID>,USER helbingUSER mysql:db,如果不指定USER则默认使用root用户

ONBUILD

ONBUILD指定的命令在构建镜像时并不执行,而是在它的子镜像构建时执行,如ONBUILD RUN sudo apt-get update && sudo apt-get install -y nginx

posted @ 2016-06-04 12:51  我不是黄海滨  阅读(334)  评论(0编辑  收藏  举报