04.Docker DockerFile

一、DockerFile内容基础知识

1.每条保留字指令都必须为大写字母且后面要跟随至少一个参数

2.指令按照从上到下顺序执行

3.#表示注释

4.每条指令都会创建一个新的镜像层,并对镜像进行提交

二、常用保留字指令

FROM

基础镜像,当前新镜像是基于哪个镜像的

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

容器构建时需要运行的命令

EXPOSE

当前容器对外暴露出的端口

WORKDIR

指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

ENV

用来在构建镜像过程中设置环境变量

ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY

类似ADD,拷贝文件和目录到镜像中。

将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

两种写法

COPY src dest
COPY ["src","dest"]

VOLUME

容器数据卷,用于数据保存和持久化工作

CMD

指定一个容器启动时要运行的命令

DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换

ENTRYPOINT

指定一个容器启动时要运行的命令

ENTRYPOINT的目的和CMD一样,都是指定容器启动程序及参数

ONBUILD

当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

DockerFile常用指令使用案例(只是语法案例)

#继承centos
FROM centos
#维护者姓名及邮箱
MAINTAINER luoruiyuan<luoruiyuan@live.com>
#把宿主机c.txt复制到容器/usr/local改名为test.txt
COPY c.txt /usr/local/test.txt
#把JDK复制到/usr/local/目录下并解压
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
#安装tomcat
RUN yum -y install tomcat
#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_171
#$PATH必须写前面不然环境变量就只有JAVA_HOME了,“:”冒号为连接符
ENV PATH $PATH:$JAVA_HOME/bin
#设置工作访问的目录,也就是落脚点(可以直接写目录,也可以使用环境变量)
WORKDIR $JAVA_HOME
#容器运行时监听的端口
EXPOSE 8080
#运行一个命令(可以数组形式也可以直接写)
CMD ["echo","==========="]
CMD echo "success"
ENTRYPOINT ["user/local/apache-tomcat-9.0.8/bin/startup.sh"]
#当被继承是执行命令
ONBUILD RUN echo "------------------------"

三、构建命令

docker build -f dockerfile路径 -t 镜像名:版本 .
docker build -f /home/data/dockerfile -t lry/centos .

12

(1)