docker镜像本质上就是一个个基础镜像的堆叠,为了做出我们想要的镜像,我们需要考虑最终镜像所需的所有基础环境,然后一层层堆叠.也就是不断以基础镜像搭建上层镜像.
先看例子:
# Version: 1.0.0 # Create Time: 2015-12-25 11:04 # Author: *** # Description:**** # 基于已经配置好的jdk1.8版本进行操作 FROM jdk:latest MAINTAINER ***** <********@qq.com> # 创建目录 #RUN mkdir -p -m 777 /home # 将压缩包迁移到容器中并解压 ADD tomcat8.tar.gz /home/tomcat8/ # 暴露文件目录 #VOLUME ["/home/docker/file/distfirstout", "/home/docker/file/input/D001"] #VOLUME ["/app/tomcat8/webapps/"] # 暴露网络端口 EXPOSE 8881 # 启动服务 ENTRYPOINT ["/home/tomcat8/apache-tomcat-8.0.24/bin/catalina.sh", "run"]
这是一个安装tomcat镜像的dockerfile,基础镜像是一个叫jdk的镜像.
语法介绍:
1.FROM 基础镜像
2.MAINTAIN 作者信息
3.RUN 命令(该命令是运行在安装软件时,在基础镜像上面运行的命令)
4.CMD 命令(启动容器时运行的命令,如果文件最后添加了ENTRYPOINT 命令,则该命令会被覆盖)
5.USED 用户(设置容器操作用户)
6.EXPOSED 端口(容器向外暴露的端口)
7.ENV 环境变量(设置容器内环境变量)
8.ADD 文件(添加文件)
9.VOLUME 目录(挂在宿主机目录)
10.WORKDIR 目录(工作目录)
dockerfile里面所设置的这些内容实际上基本上都可以在容器启动时设定,但是想要做成一个成熟的镜像还是有比要把这些基础设置填写完全.