## 7.1 base image
FROM centos
## 7.2 Metadata信息 不可少! (类似注释)
LABEL maintainer=“applestven@gmail.com”
LABEL version = "1.0"
LABEL description ="THis is description"
## 7.3 RUN 运行
em: 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 请用反斜线换行 !
避免无用分层 ,合并多条命令成一行
## 7.4 WORKDIR /root 当前工作目录
em : WORKDIR /root
WORKDOR /test #如果没有会自动创建test目录
WORKDIR demo
RUN pwd # 输出结果应该是 /text/demo
注意 : 用WORKDIR ,不要使用RUN cd 尽量使用绝对目录
## 7.5 ADD and COPY
em : ADD hello / # 添加hello 到根目录
ADD test.tar.gz / # 添加到根目录并解压
WORKDIR /root
ADD hello test/ ## 此时 #/root/test/hello
WORKDIR /root
COPY hello test/
注意 : 大部分情况 ,COPY 优于 ADD !
ADD 除了COPY 还有额外功能 (解压 )!
添加远程文件/目录请使用curl或者 wget !
## 7.6 ENV 环境
em:ENV MYSQL_VERSION 5.6 # 设置常量
RUN apt-get install -y mysql-server = '${MYSQL_VERSION}' \
&& rm -rf /var/lib/apt/list/* # 引用常量
注意 : 尽量使用ENV增加可维护性!
## 7.7 VOLUME and EXPOSE (存储和网络 )
## 7.8 CMD and ENTRYPOINT
em :RUN vs CMD vs ENTRYPOINT ( entrypoint )
RUN :执行命令并创建 新的Image Layer
CMD : 设置容器启动后默认执行的命令和参数 (多条只执行最后一条 ,多条会被覆盖)
ENTRYPOINT : 设置容器启动时运行的命令 (一定会执行)