
一、说明
Dockerfile文件是Docker容器的描述文件,当中包含一行行命令,每条指令用来构建一层,整个文件用来指导构建容器的顺序。
二、Dockerfile的关键字
1.关键字列表

2. 行合并
Dockerfile 的指令每执行一次都会在 docker 上新建一层,能合并的尽量合并,如:
FROM centosRUN yum install wgetRUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"RUN tar -xvf redis.tar.gz# 以上执行会创建 3 层镜像。可简化为以下格式:FROM centosRUN yum install wget && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && tar -xvf redis.tar.gz
3. run shell 格式:
RUN # 相当于在终端操作的 shell 命令。
4. run exec 格式:
RUN ["可执行文件", "参数1", "参数2"]# 例如:# RUN ["./test.php", "dev", "offline"] 相当于 RUN ./test.php dev offline
二、一个简单的Dockerfile说明
1. 准备
vim run.sh
#!/bin/bash/usr/local/apache2/bin/httpd -D FOREGROUND
# 新生成的镜像是基于sshd:dockerfile镜像FROM centos:centos7MAINTAINER xundh# 安装wgetRUN yum install -y wgetWORKDIR /usr/local/src# 下载并解压源码包RUN wget http://archive.apache.org/dist/httpd/httpd-2.4.41.tar.gzRUN tar -zxvf httpd-2.4.41.tar.gzWORKDIR httpd-2.4.41# 编译安装apacheRUN yum -y install epel-release.noarch && yum makecache fastRUN yum install -y gcc make apr-devel apr apr-util apr-util-devel pcre-develRUN ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-soRUN makeRUN make install# 修改apache配置文件RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/g' /usr/local/apache2/conf/httpd.conf# 启动apache服务RUN /usr/local/apache2/bin/httpd# 复制服务启动脚本并设置权限ADD run.sh /usr/local/sbin/run.shRUN chmod 755 /usr/local/sbin/run.sh# 开放80端口EXPOSE 80CMD ["/usr/local/sbin/run.sh"]
三、构建命令
docker build -t centos:test .# 启动一个容器docker run -p 80:80 -d centos:test