2.6 dockerfile语法梳理

FROM:从哪里构建image

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

注意:为了安全,请使用官方的image

LABEL:标签

LABEL maintainer="[email protected]"
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/* # 引用常量

Dockerfile Demo Time

你可能感兴趣的:(2.6 dockerfile语法梳理)