欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力
对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
专栏:
文章概述: Dockerfile完全指南_常见的13种指令下的介绍
关键词:docker dockerfile
本文目录:
Dockerfile完全指南_常见的13种指令下
ENTRYPOINT
配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
指定容器启动的要运行的命令,可以追加命令
指令格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2 (shell内部命令)
示例
ENTRYPOINT ["top", "-b"]
注意:
ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
ENV
这个指令非常简单,就是用于设置环境变量而已,无论是接下来的指令,还是在容器中运行的程序,都可以使用这里定义的环境变量。
指令格式:
ENV <key>=<value>
示例
ENV JAVA_HOME=/usr/local/jdk1.7.0_79
ENV PATH=$JAVA_HOME/bin:$PATH
EXPOSE
指定于外界交互的端口
指令格式:
EXPOSE
示例
EXPOSE 80
注意:
EXPOSE并不会让容器的端口访问到主机。要使其可访问,需要在docker run运行容器时通过-p来发布这些端口,或通过-P参数来发布EXPOSE导出的所有端口。
VOLUME
用于指定持久化目录
指令格式:
VOLUME ["/path/to/dir"]
示例
VOLUME ["/data"]
VOLUME ["/var/www", "/var/log/apache2"]
注意:
一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:
1 卷可以容器间共享和重用
2 容器并不一定要和其它容器共享卷
3 修改卷后会立即生效
4 对卷的修改不会对镜像产生影响
5 卷会一直存在,直到没有任何容器在使用它
USER
USER
指令用于将会用以什么样的用户去运行
指令格式:
USER user
USER user:group
注意:
使用USER指定用户后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT都将使用该用户。镜像构建完成后,通过docker run
运行容器时,可以通过-u参数来覆盖所指定的用户。
ONBUILD
帮助别人定制而准备的
指令格式:
ONBUILD [INSTRUCTION]
示例
FROM centos
WORKDIR /data
ONBUILD RUN mkdir test
FROM test:02