# DockerFile

# 是什么

是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本

dockerFile中每条指令都会创建一个新的镜像层,并对镜像进行提交

  • 构建三步骤
    1. 编写dockerfile
    2. docker build
    3. docker run

# DockerFile示例

下面是centos的dockerFile的代码:

FROM scratch    # 真正的基础镜像,类似于java中的Object
MAINTAINER The CentOS Project <cloud-ops@centos.org>    # 作者+邮箱
ADD c68-docker.tar.xz /
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# 一个说明
# Default command
CMD ["/bin/bash"]   #启动的时候的运行命令

# 保留字

  • From:基础镜像,当前编写的镜像是基于哪个镜像的
  • MAINTAINER:作者+作者的邮箱
  • RUN:容器构建时需要运行的命令
  • EXPOSE:暴露端口
  • WORKDIR:默认登陆的工作目录
  • ENV:在构建镜像过程中设置环境变量
  • ADD:将宿主机目录下的文件拷贝进镜像,并自解压
  • COPY:拷贝文件,COPY src dest或者COPY ["src","dest"]
  • VOLUME:保存数据和持久化,建立容器卷
  • CMD:指定一个容器启动时要运行的命令,dockerFIle中可以有多个cmd指令,但只有最后一个生效,CMD会被docker run之后的参数替换
  • ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT和CMD一样,都是在指定容器启动程序和参数
  • ONBUILD:当构建一个被继承的dockfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
BUILD BOTH RUN
FROM WORKDIR CMD
MAINTAINER USER ENV
COPY EXPOSE
ADD VOLUME
RUN ENTRYPOINT
ONBUILD
.dockerignore