2.6 dockerfile语法梳理

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/* # 引用常量

Dockerfile Demo Time

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容