态度决定一切

0%

DockerFile语法

FROM

1
from scratch   ##制作base Image
1
from centos ##使用 base Image

==尽量使用官方的Image作为base Image (安全)==

LABEL: metadata 帮助信息,类似注释

1
LABEL maintainer="yefan813@gmail.com"
1
LABEL version="1.0"
1
LABEL description="this is description"

RUN: 运行命令,运行后会生成新的layer,尽量将命令写成一行

1
2
RUN yum update && yum install -y vim \
python-dev ##反斜杠换行
1
RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'

WORKDIR: 类似 Linux 中 cd

1
WORKDIR /ROOT
1
2
3
WORKDIR /test #如果没有将会创建 test 目录
WORKDIR demo
RUN pwd #输出结果是/test/demo

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

ADD and COPY:将文件添加到制定目录下,add 有解压的作用

1
ADD hello /
1
ADD test.tar.gz / ##添加到根目录并解压
1
2
WORKDIR /root
ADD hello test/ ##/root/test/hello
1
2
WORKDIR /root
COPY hello test/

==大部分情况,copy 优于 ADD,添加远程文件、目录使用 curl 或者 wget==

ENV: 设定环境变量、常量

1
2
3
ENV MYSQL_VERSION 5.6 ##设置常量
RUN apt-get install-y mysql-server="${MYSQL_VERSION}" \
&& rm -rf /var/lib.apt/lists/* ##引用常量

==尽量使用 ENV 增加可维护性==

VOLUME and EXPOSE: 存储(将 docker 数据存储到宿主机)和网络

1
2


CMD and ENTRYPOINT:

1
2
3
RUN:执行命令并创建新的 Image Layer
CMD:设置容器 ‘启动后’ 的默认执行命令和参数
ENTRYPOINT:设置容器‘启动时’运行的命令

image

image

image

==语法可以参考官方
github地址==