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 | RUN yum update && yum install -y vim \ |
1 | RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME' |
WORKDIR: 类似 Linux 中 cd
1 | WORKDIR /ROOT |
1 | WORKDIR /test #如果没有将会创建 test 目录 |
==用 WORKDIR 不要用 RUN cd,尽量使用绝对目录==
ADD and COPY:将文件添加到制定目录下,add 有解压的作用
1 | ADD hello / |
1 | ADD test.tar.gz / ##添加到根目录并解压 |
1 | WORKDIR /root |
1 | WORKDIR /root |
==大部分情况,copy 优于 ADD,添加远程文件、目录使用 curl 或者 wget==
ENV: 设定环境变量、常量
1 | ENV MYSQL_VERSION 5.6 ##设置常量 |
==尽量使用 ENV 增加可维护性==
VOLUME and EXPOSE: 存储(将 docker 数据存储到宿主机)和网络1
2
CMD and ENTRYPOINT:1
2
3RUN:执行命令并创建新的 Image Layer
CMD:设置容器 ‘启动后’ 的默认执行命令和参数
ENTRYPOINT:设置容器‘启动时’运行的命令


