通过Dockerfile可以生产docker镜像
基础镜像信息
<!-- --读取的镜像源 -->
FORM image/image:tag
例:FORM centos:7.0
维护者信息
<!-- --维护者的信息 -->
MAINTAINER name
例:MAINTEAINER zhanghaolei
<!-- --镜像的标签--LABEL会继承基础镜像的LABEL -->
LABEL key=value
例 LABEL version=1.0
镜像操作指令
<!-- --类型与scp操作,可以拷贝文件,也可以请求链接,操作压缩文件时自动解压 -->
ADD <src>... <dest>
例 ADD test /User/user
<!-- --文件拷贝操作,COPY只能操作本地文件 -->
COPY <src>... <dest>
例 ADD test /User/user
<!-- --指定容器暴露的端口,宿主机和容器的端口映射需要启动容器时指定 -->
EXPOSE <port>/<tcp/udp>
例 EXPOSE 80 443
<!-- --定义变量 -->
ENV key=value
例 ENV test=test1 case=case1
<!-- 在Dockerfile中使用变量的方式 -->
$varname
${varname}
${varname:-default value}
$(varname:+default value}
第一种和第二种相同
第三种表示当变量不存在使用-号后面的值
第四种表示当变量存在时使用+号后面的值(当然不存在也是使用后面的值)
<!-- 容器构建时运行指定的命令,可执行文件,可直接执行shell命令 -->
RUN command/RUN ["executable","param1","param2"]
例 RUN cd/User/user
例 RUN ["pull.sh","update"]
容器启动时执行命令
<!-- --容器运行时指定的命令 -->
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command
例 ENTRYPOINT ["pull.sh","update"]
<!-- --容器运行时指定的命令 -->
CMD ["executable","param1","param2"]
CMD [param1","param2"]
CMD command
例 CMD ["pull.sh","update"]
<!-- --文件挂载命令 -->
VOLUME ["/data"]
例 VOLUME /var/log
例 VOLUME ["var/log"]
例 VOLUME /var/log /var/db
<!-- --设置启动容器的用户,可以是用户名或UID -->
USER daemo
USER UID
例 USER zhanghaolie
<!-- --容器内cd操作 -->
WORKDIR /path/workdir
例 WORKDIR $path/user
<!-- --构建容器时增加参数 -->
ARG name=value