更多的Dockerfile文件可以参考:https://github.com/docker-library

FROM

FROM指定了镜像需要的base image是什么

尽量使用官方的Image 作为base image

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

LABEL

LABEL 是描述镜像的 meatdata

LABEL maintainer="username@gmail.com"
LABEL version="1.0"
LABEL description="This is description"

RUN

RUN 用来执行一些命令,比如要安装一些软件的时候就经常使用到

每运行一次runImage 都会生成一个layer,所以为了避免无用分层,通常合并多条命令成一行

RUN yum update && yum install -y vim \
    python-dev

WORKDIR

WORKDIR 类似Linux中的cd命令,不同的是如果没有文件夹的时候,会自动创建这个文件夹

WORKDIR ,不要用 RUN cd,尽量使用绝对目录

WORKDIR /test      # 进入/test 目录,如果没有会自动创建test目录

ADD 和 COPY

两者都是添加文件到指定目录

不同的是,如果文件是压缩文件,ADD会解压后拷贝到目录

ADD hello.txt /  # 将hello.txt 添加到根目录下

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

WORKDIR /root
ADD hello.txt test/  # /root/test/hello.txt

WORKDIR /root
COPY hello.txt test/

添加远程文件/目录,请使用 curl 或者 wget


ENV

ENV 用来设置常量

ENV MYSQL_VERSION 5.6 # 设置常量
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" # 引用常量

VOLUME 和 EXPOSE

存储和网络,后面单独讲


CMD 和 ENTRYPOINT

后面单独讲