一、FROM
FROM ubuntu:14:04
>FROM centos
FROM scratch
代表是要在那个镜像上面去构建新的镜像
如果是从头去制作一个镜像,不依赖其它的镜像,就用 scratch
二、LABEL
定义了这个镜像的一数据
LABEL
LABEL maintainer="joy@163.com"
LABEL version="1.0"
LABEL description="这里是描述"
metadata
maintainer:作者
version:版本
description:描述
LABLE Metadata是不可以少的,道理就是就像我们写代码的时候写注释一样。
三、RUN
RUN get-apt update && get-apt install openssh
\ python-dev
反斜杠代表换行
RUN apt-get update && apt-get install -y perl \
pwgen --no-install-recommends && rm -rf \
/var/lib/apt/lists/*
rm -rf /var/lib/apt/lists/*
装完东西后记得 清理cache
RUN /ban/bash -C 'source $HOME/.bashrc; echo $HOME'
加上环境变量
注意
一个Dockerfile中多次使用RUN,每一次使用都会分层,为了避免分层,可以把多个命令写在同一个RUN下面。
四、WORKDIR
创建 工作目录
WORKDIR /root
WORKDIR /test
WORKDIR demo
RUN pwd
没有目录会自动创建 目录, run pwd 输出结果 的目录会是 /test/demo,
也就是说用 WORKDIR 指定工作目录后,应该会进入到 对应的目录上去
注意
用workdir,不要用RUN cd ,尽量使用绝对目录
五、ADD and COPY
把本地的一些文件添加到image里里
ADD hello /
把本地当目录下的hello 添加到 镜像当中的根目录下
ADD test.tar.gz /
把本地目录下的test.tar.gz 添加到 镜像文件的根目录下并解压缩
WORKIDR /root
ADD hello test/
创建/root工作目录 并把系统当前目录下的hello添加到/root/test中
WORKDIR /root
COPY hello test/
大部分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/*
设置常量 MYSQL_VERSION 5.6
在安装mysql的时候引用
最后清理缓存