Dockerfile
Dockerfile分为四个部分: 基础镜像信息、维护者信息、镜像操作指令和容器启动指令。
即FROM、MAINTAINER、RUN、CMD四个部分
指令说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FROM 指定所创建镜像的基础镜像 MAINTAINER 制定维护者信息 RUN 运行命令 CMD 容器启动是默认执行的命令 LABEL 指定生成镜像的元数据标签信息 EXPOSE 声明镜像内服务所监听的端口 ENV 指定环境变量 ADD 复制指定src路径的内容到容器的dest路径下,如果src为tar文件,则自动解压到dest路径下 copy 复制指定src路径的内容到镜像的dest路径下 ENTERPOINT 指定镜像的默认入口 VOLUME 创建数据卷挂载点 USER 指定运行容器是的用户名或UID WORKDIR 配置工作目录 ARG 指定镜像内使用的参数 ONBUILD 配置当所创建的镜像作为其他镜像的基础镜像时,所执行创建操作指令 STOPSIGAL 容器退出信号值 HEALTHCHECK 如何进行健康检查 SHELL 指定使用shell的默认shell类型
|
nginx-dockerfile示例
vim Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| FROM centos:7.2.1511
ENV TZ=Asia/Shanghai
RUN yum -y install epel* \ yum -y install gcc openssl openssl-devel pcre-devel zlib-devel
ADD nginx-1.14.0.tar.gz /opt/
WORKDIR /opt/nginx-1.14.0
RUN ./configure --prefix=/opt/nginx --http-log-path=/opt/nginx/logs/access.log --error-log-path=/opt/nginx/logs/error.log --http-client-body-temp-path=/opt/nginx/client/ --http-proxy-temp-path=/opt/nginx/proxy/ --with-http_stub_status_module --with-file-aio --with-http_flv_module --with-http_gzip_static_module --with-stream --with-threads --user=www --group=www RUN make && make install RUN groupadd www && useradd -g www www WORKDIR /opt/nginx RUN rm -rf /opt/nginx-1.14.0
ENV NGINX_HOME=/opt/nginx ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nginx/sbin
EXPOSE 80 443 CMD ["nginx", "-g", "daemon off;"]
|
需要先下载nginx-1.14.0.tar.gz在Dockerfile同级目录下,然后执行如下命令
docker build -t nginx_image ./Dockerfile
tomcat-dockerfile示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| FROM centos:7.4.1708
ADD jdk-8u171-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-7.0.88.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_171 jdk && mv apache-tomcat-7.0.88 tomcat
ENV JAVA_HOME=/usr/local/jdk ENV CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib ENV PATH=$JAVA_HOME/bin:$PATH ENV CATALINA_HOME /usr/local/tomcat
EXPOSE 8080
CMD /usr/local/tomcat/bin/catalina.sh run
|
需要先下载jdk和tomcat在dockerfile的同级目录下,然后执行如下命令
docker build -t tomcat_image ./Dockerfile,
使用.dockerignore文件
可以通过.dockerigore文件(每一行添加一条匹配模式)来让Docker忽略匹配模式路径的目录和文件。例如
1 2 3 4 5
| # commit */tmep* */*/tmp* tmp? ~*
|