FROM:从哪里构建image
FROM scratch # 制作base image
FROM centos # 使用base image
FROM ubuntu:18.04
注意:为了安全,请使用官方的image
LABEL:标签
LABEL maintainer="abc@gmail.com"
LABEL version="1.1"
LABEL description="This is description"
注意:Metadata不可少!
RUN
为了美观,复杂的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/list/* # 注意清理cache
RUN /bin/bash -c 'source $HOME/.bashrc; echo
$HOME'
WORKDIR:设定当前工作目录
WORKDIR /root
WORKDIR /test # 如果没有,会自动创建的
WORKDIR demo
RUN pwd # 输出结果应该是 /test/demo
注意:不要用RUN cd代替WORKDIR,尽量使用绝对目录
ADD和COPY
ADD hello /
ADD test.tar.gz # 添加到根目录并解压
WORKDIR /root
ADD hello test # /root/test/hello
WORKDIR /root
COPY hello test # /root/test/hello
大部分情况copy优于add
add除了copy功能外,还附带解压缩
添加远程文件/目录请使用curl或者wget
ENV 定义常量
env可增加可维护性
ENV MYSQL_VERSION 5.6
RUN apt-get install -y mysql-server= "${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/lists/* # 引用常量