Docker学习之:Dockerfile 的语法与最佳实践

怎么样,小伙伴们,有没有通过Dockerfile创建出属于自己的镜像呢?,是不是感觉Dockerfile就写这么短不过瘾呀!没关系,这节我们来深入剖析它!
首先从头开始
FROM # 指定Base image

  • FROM scratch # 制作base image
  • FROM centos # 使用base image
  • FROM ubuntu:14.04

FROM的最佳实践就是尽量用官方的Baseimage,因为安全
LABEL

  • LABEL maintainer="[email protected]"
  • LABEL version="1.0"
  • LABEL description="This is description"

LABEL的最佳实践就是Maindata,希望大家可以像写代码注释一样,写这个为了别人能够更好的使用你的image
RUN

  • RUN yum update && yum install -y vim \
    python-dev # 反斜杠换行

  • RUN apt-get update && apt-get install -y perl
    pwgen --no-install-recommends && rm -rf
    /var/lib/apt/lists/* # 注意 清理cache

  • RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
    RUN 命令其实还是非常常用的,因为我们经常需要安装一些软件!!!!
    RUN的最佳实践就是为了美观,复杂的RUN请用分斜线换行!避免无用的分层,合并多条命令成一行!
    WORKDIR

  • WORKDIR /root

  • WORKDIR /test # 如果没有会自动创建test目录

  • WORKDIR demo
    RUN pwd # 输出结果应该是/test/demo
    这个有点像linux 里面的cd命令。
    WORKDIR的最佳实践就是用WORKDIR,不要用RUN cd!,尽量使用绝对目录!
    ADD and COPY

  • ADD hello /

  • ADD test.tar.gz / # 添加到根目录并解压

  • WORKDIR /root

  • ADD hello test/ # /root/test/hello

  • WORKDIR /root

  • COPY hello test/

ADD与COPY的区别就是ADD 不光可以添加到文件,还可以解压缩
ADD与COPY的最佳实践添加远程文件或者目录请使用curl或者wget

ENV

  • ENV MYSQL_VERSION 5.6 # 设置常量
  • RUN apt-get install -y mysql-server= "${MYSQL_VERSION}"
    && rm -rf /var/lib/apt/lists/* # 引用常量
    ENV的最佳实践尽量使用,可以增加可维护!
    最后还有,VOLUME and EXPOSE and CMD and ENTRYPOINT,我们会在后面单独讲,一口气不能吃个大胖子呀,慢慢来

你可能感兴趣的:(Docker学习之:Dockerfile 的语法与最佳实践)