FROM 指明是基于那个镜像
LABEL 标签
RUN 构建镜像时运行的shell命令
COPY 复制文件到镜像中
ADD 解压压缩包并复制
ENV 设置环境变量
USER 指明运行RUN、CMD、ENTRYPOINT命令时的执行用户
EXPOSE 暴露容器运行的服务端口
WORKDIR 为RUN、CMD、COPY、ADD、ENTRYPOINT指定工作目录
CMD 运行容器时执行,多个只执行最后一个
FROM
指定基础镜像,在此镜像基础上修改数据构建新镜像,可以是本地仓库也可以是远程仓库
格式:FROM 【本地仓库、远程仓库】image 名字 (默认最新版本)或FROM image:tag(指定版本)
RUN
运行基础镜像支持的命令,可以使用多条,指令长可以使用反斜杠黄航
格式:RUN 命令command (-bin/sh -c)或 RUN“/bin/bash”,”-c”,”echo hello cillian”
COPY
复制本地文件到容器内,目标路径不存在会自动创建
格式:COPY cillian/test1 test
注意:这个功能只能用于构建linux容器的dockefile上支持,windows容器上不起作用,运维用户和组的概念在linux和windows之间没法转换,所以仅只用于基于linux系统的容器。
WORKDIR
类似cd命令,为RUN、CMD、ENTRYPOINT配置工作目录,可以使用多个WORKDIR命令,如果后续命令不是绝对路径,就是按照上一级路径的基础上执行
ENTRYPOINT
指定容器启动时执行的命令,多次设置只执行最后一次,被翻译为进入点,这个功能让它像一个可执行程序。
格式:ENTRYPOINT [“executable”, “param1”, “param2”]
例:ENTRYPOINT [“/usr/bin/ls”,“-a”]
CMD [“-l”]
或 ENTRYPOINT command param1 param2 (as a shell)
例:ENTERPOINT ls -l
EXPOSE
让容器在运行时,监听指定端口,默认TCP协议,会将容器中的端口映射为宿主机中的端口,通过宿主机ip和映射后的端口可以访问容器,因为可以避免容器每次运行时的ip随机生成不固定的问题。运行容器上加参数-p指定设置的端口,例如 -p 9001:80 容器80端口映射为宿主机9001端口
格式: EXPOSE port
ENV
在镜像中设置环境变量,设置之后RUN就可以使用这个环境变量
格式: ENV JAVA_HOME /opt/java
构建镜像命令
例: docker build -t cillian/docker -f /cillian/dockerfile
构建nginx镜像
FROM centos:7
LABEL maintainer www.baidu.com
RUN yum install -y gcc gcc-c++ make \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl && \
yum clean all && \
rm -rf /var/cache/yum/*
ADD nginx-1.15.5.tar.gz /
RUN cd nginx-1.15.5 && \
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 4 && make install && \
mkdir /usr/local/nginx/conf/vhost && \
cd / && rm -rf nginx* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV PATH $PATH:/usr/local/nginx/sbin
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]