Docker - Dockerfile指令

Dockerfile 中可以放入很多指令,包括CMD、ENTRYPOINT、ADD、COPY、VOLUME、WORKDIR、USER、ONBUILD和ENV等,这里做一些总结

CMD

CMD是指定容器被启动时要运行的命令,如CMD [ "/bin/bash" ]CMD [ "/bin/bash", "-l" ]
但是,使用docker run 命令可以覆盖CMD命令

ENTRYPOINT

ENTRYPOINT和CMD指令类似,docker run命令中指定的任何参数都会被当做参数再次传递给ENTRYPOINT指令中指定的命令。
如:ENTRYPOINT ["/usr/sbin/nginx"]

WORKDIR

WORKDIR指令用来在从镜像创建一个新容器时,在容器内部设置一个工作目录,ENTRYPOINT或CMD指定的程序会在这个目录下执行。
我们可以使用该指令为Dockerfile中后续的一系列指令设置工作目录。如:

WORKDIR /opt/webapp/db
RUN bundle install
WORKDIR /opt/webapp
ENTRYPOINT ["rackup"]

这里,我们将工作目录切换为/opt/webapp/db后运行了bundle install命令,之后又将工作目录设置为/opt/webapp,最后设置了ENTRYPOINT指令来启动rackup命令。

ENV

ENV 指令用来在镜像构建过程中设置环境变量,如:

ENV RVM_PATH /home/rvm

VOLUME

VOLUME指令用来向基于镜像创建的容器添加卷。一个卷是可以存在于一个或者多个容器内的特定的目录,这个目录可以绕过联合文件系统,并且提供数据共享功能,具体如下:

  • 卷可以在容器间共享和重用
  • 对卷的修改是立刻生效的,且不对更新镜像产生影响
  • 卷会一直存在,直到没有任何容器再使用它

如:VOLUME ["/opt/project"],这条指令将会基于此镜像创建的任何容器创建一个名为/opt/project的挂载点,允许我们在多个容器间共享这些内容。

ADD

ADD指令用来将构建环境下的文件和目录复制到镜像中。
比如:ADD software.lic /opt/application/sofware.lic,这里的ADD指令将会把构建目录下的software.lic文件复制到镜像中的/opt/application/sofware.lic。

ONBUILD

ONBUILD指令能为镜像添加触发器(trigger)。当一个镜像被用做其它镜像的基础镜像时,该镜像中的触发器将会被执行。

你可能感兴趣的:(Docker,docker)