关键字说明
指令 | 说明 |
---|---|
FROM | 定制的镜像都是基于 FROM 的镜像 |
MAINTAINER | 标示镜像是谁写的,姓名+邮箱等信息 |
RUN | 用于执行后面跟着的命令行命令。 |
COPY | 复制指令,从上下文目录中复制文件或者目录到容器里指定路径。 |
ADD | ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。如果是压缩包则会自动解压 |
CMD | 类似于 RUN 指令,用于运行程序 |
ENTRYPOINT | 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。 |
ENV | 设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。 |
ARG | 构建参数,与 ENV 作用一至。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。 |
VOLUME | 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。 |
EXPOSE | 仅仅只是声明端口。 |
WORKDIR | 指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。 |
USER | 用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。 |
HEALTHCHECK | 用于指定某个程序或者指令来监控 docker 容器服务的运行状态。 |
ONBUILD | 用于延迟构建命令的执行。 |
更多详情可参考:https://www.runoob.com/docker/docker-dockerfile.html
示例
编写DockerFile
FROM centos # 基于什么构建
MAINTAINER salulu # 作者信息
ENV MYPATH /usr/local #环境信息配置
WORKDIR $MYPATH # 工作目录
RUN yum -y install vim # 安装vim
RUN yum -y install net-tools # 安装网络工具
EXPOSE 80 # 暴露80端口
CMD echo $MYPATH
CMD echo "666test"
CMD /bin/bash
下面编写一个tomcat的Dockerfile
文件名称默认为Dockerfile,当然也可以使用任意名称。
FROM centos # 基于centos构建
MAINTAINER salulu # 作者信息
COPY readme.txt /usr/local/readme.txt #把readme文件复制到镜像中
ADD jdk-8u11-linux-x64.tar.gz /usr/local/ # 解压jdk到/usr/local目录下
ADD apache-tocat-9.0.22.tar.gz /usr/local/ # 解压tomcat
RUN yum -y install vim # 安装vim命令
ENV MYPATH /usr/local
WORKDIR $MYPATH # 配置环境信息和工作目录
ENV JAVA_HOME /usr/local/jdk1.8.0_11 # 配置jdk的环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/appache-tomcat-9.0.22 # 配置tomcat的环境变量
ENV CATALINA_BASH /usr/local/appache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:CATALINA_HOME/lib:CATALINA_BASH/bin # 把环境变量添加到全局中
EXPOSE 8080 # 暴露8080端口
CMD /usr/local/appache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/appache-tomcat-9.0.22/bin/logs/catalina.out # 执行启动tomcat的脚步并输出tomcat的日志
docker build -f Dockerfile -t myTomcat .
注意命令的后面有个点,这个是指定构建到当前目录下