什么是Dockerfile?
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境
- 对于测试人员:可以直接拿开发时构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作
- 对于运维人员:在部署时,可以实现应用的无缝移植
常用的几个命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量(可以写多条) |
RUN command | 是dockerfile的核心部分(可以写多条) |
ADD soure_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY soure_dir/file dest_dir/file | 与ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
配置指令如下
ARG 定义创建过程中使用的变量
FROM 指定所创建镜像的基础镜像
LABEL 为生成的镜像添加元数据标签信息
EXPOSE 声明镜像内服务监听的端口
ENV 指定环境变量
ENTRYPOINT 指定镜像的默认入口命令
VOLUME 创建一个数据卷挂载点
USER 指定运行容器时的用户名或UID
WORKDIR 配置工作目录
ONBUILD 创建子镜像时指定自动执行的操作指令
STOPSIGNAL 指定退出的信号值
HEALTHCHECK 配置所启动容器如何进行健康检查
SHELL 指定默认shell类型
操作指令如下
RUN 运行指令命令
CMD 启动容器时指定默认执行的命令
ADD 添加内容到镜像
COPY 复制内容到镜像
Dockerfile举例
文件名必须为Dockerfile
FROM centos:7
MAINTAINER pasiyu
WORKDIR /usr
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
执行命令:
docker build -t='jdk1.8' .
-t:指定镜像名称
.:代表指定Dockerfile的文件夹,.表示当前文件夹
举例详情说明2:
FROM centos
#作者和邮箱
MAINTAINER szy<1063164661@qq.com>
#把宿主机中的c.txt拷贝到容器/usr/local目录下
COPY c.txt /usr/local/cincontainer.txt
#把java和tomcat添加到/usr/local目录下
ADD jdk-8u102-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.39.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim
#设置环境变量
ENV MYPATH /usr/local
#设置工作目录
WORKDIR $MYPATH
#配置java与tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_102
#dt.jar运行环境的类库,tools.jar是工具类库
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#CATALINA_HOME是Tomcat的安装目录
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.39
#CATALINA_BASE是Tomact的工作目录
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.39
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASE/bin
#容器运行时监听的端口
EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.39/bin/startup.sh && tail -F /usr/local/apache-
tomcat-
8.5.39/bin/logs/catalina.out