dockerfile语法(一)

dockerfile语法(一)

FROM

  • FROM scratch 制作base image
  • FROM centos 使用base image
  • FROM ubuntu:14.04 使用base image 指定版本

LABEL

  • LABEL maintainer="[email protected]"
  • LABEL version="1.0"
  • LABEL description="This is description"

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/lists/* #注意清理cache
  • RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'

为了美观,复杂的RUN请用反斜线换行!避免无用分层,合并多条命令成一行!

WORKDIR

WORKDIR /root
WORKDIR /test     # 如果没有会自动创建test目录
WORKDIR demo
RUN pwd              # 输出结果应该是 /test/demo

用WORKDIR,不要用 RUN cd! 尽量使用绝对目录!

ADD and COPY

  • ADD hello / 将hello添加到Image的根目录中
  • ADD test.tar.gz / 添加到根目录并解压
  • WORKDIR /root
    ADD hello test/
    或者
    WORDIR /root
    COPY hello test/ 将hello添加到 /root/test/hello

大部分情况,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/* #引用常量

EXPOSE

EXPOSE 5000 暴露5000端口

猜你喜欢

转载自my.oschina.net/u/3628952/blog/1805860