Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
FROM:定制的镜像都是基于 FROM 的镜像。

RUN:用于执行后面跟着的命令行命令。
RUN <命令行命令>  # <命令行命令> 等同于,在终端操作的 shell 命令。
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。
RUN apt-get install nodejs
RUN apt-get install curl
会创建2层镜像。
RUN apt-get install nodejs \
        && curl
只会创建1层镜像。

COPY:复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
[--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。
COPY /web/nginx.conf  /var/nginx/nginx.conf

ADD: ADD 指令和 COPY 的使用格式一致(同样需求下,官方推荐使用 COPY)。

CMD:类似于 RUN 指令,CMD 在docker run 时运行。RUN 是在 docker build。如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 

ENV:设置环境变量。
ENV <key1>=<value1> <key2>=<value2>...

WORKDIR:指定工作目录。docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
WORKDIR <工作目录路径>

Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。
Compose 使用的三个步骤:
1、使用 Dockerfile 定义应用程序的环境。
2、使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
3、执行 docker-compose up 命令来启动并运行整个应用程序。如果你想在后台执行该服务可以加上 -d 参数:docker-compose up -d
version:指定本 yml 依从的 compose 哪个版本制定的。

build:指定为构建镜像上下文路径。
command:覆盖容器启动的默认命令。
depends_on:设置依赖关系。
devices:指定设备映射列表。
env_file:从文件添加环境变量。
environment:添加环境变量。
expose:暴露端口,但不映射到宿主机,只被连接的服务访问。
image:指定容器运行的镜像。以下格式都可以:
    image: redis
    image: ubuntu:14.04
    image: tutum/influxdb
    image: example-registry.com:4000/postgresql
    image: a4bc65fd # 镜像id
logging:服务的日志记录配置。
network_mode:设置网络模式。
    network_mode: "bridge"
    network_mode: "host"
    network_mode: "none"
    network_mode: "service:[service name]"
    network_mode: "container:[container name/id]"
networks:配置容器连接的网络。
volumes:将主机的数据卷或着文件挂载到容器里。
    volumes:
      - "/localhost/nginx.conf:/var/run/nginx/nginx.conf"