Dockerfile ----构建sshd、systemctl、Nginx、Tomcat镜像
一:什么是Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 Dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成。
Dockerfile结构四部分:
-
基础镜像信息
-
维护者信息
-
镜像操作指令
-
容器启动时执行指令
Dockerfile操作指令:
- FROM 镜像:指明构建的新镜像是来自于哪个基础镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令;
- MAINTAINER 名字 :指明镜像的维护人信息;
- RUN 命令: 在所基于的镜像上执行命令,并提交到新的镜像中;
- CMD [“要运行的程序”,“参数1”,“参数2”]:指定启动容器时要运行的命令或脚本,Dockefile只能有一条CMD命令,如指定多条则只能最后一条被执行;
- EXPOSE 端口号 :声明容器运行的服务端口;
- ENV 环境变量 变量值 :指定一个环境变量的值,会被后面的RUN使用;
- ADD 源文件/目录 目标文件/目录 : 将源文件复制到目标文件,源文件要与dockerfile位于相同目录中或者是一个URL;
- COPY 源文件/目录 目标文件/目录 :作用与ADD类似,但是不支持自动下载和解压;
- ENTRYPOINT:指定一个容器启动时要运行的命令,用法类似于CMD,只是有由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被当作参数传递给ENTRYPOINT指定的程序;
- VOLUME [“目录”] :在容器中创建一个挂载点;
- USER 用户名/UID : 指定运行容器时的用户;
- WORKDIR 路径:相当于cd命令,切换目录路径;
- ONBUILD 命令 :指定所生成的镜像作为一个基础镜像时要运行的命令;
- HEALTHCHECK :健康检查