FROM:指定 base 容器的镜像(即在哪个镜像的基础上进行操作)
LABEL:设置镜像的制作者或者维护者的信息,可以是任意字符串
ENV:设置在Dockerfile中使用的变量(不能再容器中使用)
ENV NGINX_VERSION -.10.3
wget http://nginx.org/download/NGINX_VERSION.tar.gz
- COPY:复制本地文件到镜像目录下
# COPY 支持两种形式
COPY src dist
COPY ["src", "dist"]
ADD:与COPY相似, 不同的是如果src是归档文件,文件会被自动解压到dist
EXPOSE:在容器内部间暴露端口
VOLUME:将文件或目录声明为volume
WORKDIR:为RUN,CMD,ENTERPOINT,ADD或COPY指令设置镜像中的当前工作目录
ENTERPOINT:设置容器运行时执行的命令,Dockerfile中可以有多个ENTERPOINT命令,但只有最后一个生效。CMD或者docker run之后的参数会被当做参数传递给ENTERPOINT
RUN:从Dockerfile中构建容器过程中容器里面执行的命令
CMD:容器启动时运行的命令,Dockerfile中可以有多个CMD指令,但只有最后一个可以生效。CMD可以被docker run后的参数替换掉。
下面是一个简单的构建 Nginx 镜像的Dockerfile
#从centos镜像基础上安装nginx
From centos:6.9
#声明dockerfile维护者的邮箱
LABEL maintainer "liuchengsheng95@qq.com"
ENV NGINX_VERSION 1.10.3
ENV OPENSSL_VERSION 1.0.2h
ENV ZLIB_VERSION 1.2.11
ENV PCRE_VERSION 8.40
ENV CONCAT_VERSION 1.2.2
ENV BUILD_TOOLS wget gcc make yum-utils gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
#定义工作目录
ENV SRC_DIR /opt/nginx
COPY Centos-Base.repo /etc/yum.repos.d
WORKDIR SRC_DIR
#安装所需工具,下载软件,编译安装
RUN yum makecache \
&& yum -y install ca-certificates nano ${BUILD_TOOLS} \
&& wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz \
&& wget https://github.com/alibaba/nginx-http-concat/archive/${CONCAT_VERSION}.tar.gz -O nginx-http-concat-${CONCAT_VERSION}.tar.gz \
&& tar xf nginx-${NGINX_VERSION}.tar.gz \
&& tar xf nginx-http-concat-${CONCAT_VERSION}.tar.gz \
&& cd nginx-${NGINX_VERSION} \
&& ./configure --prefix=/usr/local/nginx \
--with-pcre \
--with-http_sub_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--add-module=../nginx-http-concat-${CONCAT_VERSION} \
&& make \
&& make install \
&& rm -rf ${SRC_DIR} \
&& yum remove wget gcc-c++ gcc -y \
&& package-cleanup -q --leaves | xargs -l1 yum -y remove \
&& yum remove yum-utils -y \
&& yum clean all
#把当前目录下的conf/目录下的内容复制到容器的/usr/local/nginx/conf/中
#COPY conf/ /usr/local/nginx/conf/
#定义启动容器是运行的命令
#ENTRYPOINT ["/usr/local/nginx/sbin/nginx"]
EXPOSE 80 443