FROMpython
FROM 是Dockerfile 最开头的关键字,它制定了咱们要Build 的Docker image 的Base image 是什么,就是咱们想在哪一个image 之上去Build 咱们的image ,如最开始的 Hello-world,它没有依赖任何Base image ,这样的话咱们就选FROM scratch ,从头制做一个Base image ,更多的状况是使用已有的Base image,好比说官方的centos 的已有的Base image ,而后FROM centos ,这样的话能够在centos 的基础之上去Build image,一样也能够选择一些其余的Linux 发行版,如:ubntumysql
FROM 尽可能使用官方的image 做为base image ->为了安全sql
LABEL ubuntu
LABEL 这个语法在Dockerfile 里面定义了咱们的image Metadatavim
对于LABEL 来说 Metadata 不可少!->对于image来说它必须有一些帮助信息,就像咱们日常了解的注释同样centos
RUN安全
python-dev # 反斜线换行 bash
pwgen --no-install-recommends && rm -rf \ 网络
/var/lib/apt/lists/* #注意清理 cache curl
咱们每RUN 一次,对image 来说都会生成新的一层
RUN 为了美观,复杂的RUN请用反斜线换行!避免无用分层,合并多条命令成一行!
WORKDIR
WORKDIR 是设定当前公公目录的,有点像Linux 中使用cd 改变当前目录位置
WORKDIR 用WORKDIR,不要用 RUN cd!尽可能使用绝对目录!
ADD and COPY
ADD hello test/ # /root/test/hello
COPY hello test/
ADD 和 COPY 很是像,都是经过把本地的文件添加到Docker image 里面
ADD or COPY 大部分状况,COPY优于ADD!ADD除了COPY还有额外功能(解压)!添加远程文件/目录请使用curl或者wget!
ENV
&& rm -rf /var/lib/apt/lists/* # 引用常量
ENV 尽可能使用 ENV 增长可维护性!
VOLUME and EXPOSE (存储和网络)
CMD and ENTRYPOINT
要想对Dockerfile 有更加深刻的了解能够搜索Dcokerfile reference 官网,里面详细的描述了Dockerfile 里面的语法和语法的使用场景