今天给大家整理一下Dockerfile相关的知识,希望对大家能有所帮助!1、Dockfile介绍Dockfile是一种可以被Docker解释的脚本文件,Dockerfile其实由若干条的指令组成,每条指令对应Linux下面的一条脚本命令。Docker应用程序可以将这些指令转化为Linux实际执行的命令。Docker读取Dockerfile文件的指令然后生成对应的docker镜像。通过dockerfile文件可以比较明确的描述出Docker镜像是如何一步一步构建的。有了Dockerfile,我们可以根据实际的因业务需要构建自己的镜像并可以添加一些需要执行的命令,这样可以避免后续的部署工作省去了需要重复敲命令的繁琐过程,大大节约了项目部署的时间成本2、Dockerfile命令书写规则Dockerfile的指令忽略大小写,不过建议使用大写,可以使用#作为指令的注释,每一行只能表示一条指令,每条指令可以携带多个参数。3、Dockerfile的指令的分类构建指令:用于构建Docker镜像,其指定的操作不会在运行image的容器上执行,属于镜像的构建过程。。设置指令:用于设置Docker镜像的属性,其指定的操作会在运行镜像的容器中执行。4、Dockerfile指令组成4.1 From(指定基础镜像)- Dockerfile必须指定FROM ,并且是第一行,属于构建命令。
4.2 MAINTAINER(指定镜像作者信息)用来指定构建镜像的作者信息,方便后续通过docker inspect命令查看,对镜像没有实际的影响。语法: MAINTAINER author name4.3 RUN (指定需要执行的shell命令)该命令会在新创建的镜像上添加新的层面。docker build 时运行。4.4 CMD(设置容器启动时执行的操作)可以是执行自定义脚本,也可以是执行系统命令,该指令只能在文件中存在一次,如果有多个,则只会执行最后一条。docker run时运行。格式: CMD ["executable","param1","param2"] 或 CMD ["param1","param2"]4.5 ENTRYPOINT(设置容器启动时执行的操作)设置指令,指定容器启动时执行的命令,可以追加命令,但是只有最后一个ENTRYPOINT有效。格式: ENTRYPOINT ["executable", "param1","param2"]4.6 USER(设置容器执行shell命令的用户)设置指令,设置启动该容器的用户,默认是root用户。4.7 EXPOSE(宿主和容器端口映射设置)4.8 ENV(设置环境变量)ENV指令可以用于为docker容器设置环境变量。示例:ENV JAVA/HOME /usr/local/jdk1.8.0.25 指定java环境变量4.9 ADD(文件复制命令)优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。说明:参数:destination 是容器内的路径。source 可以是 下载文件的URL 或者宿主主机的目录4.10 COPY4.11 VOLUME (指定挂载点)创建一个可以从本地主机或其他容器挂载的挂载点,用来存放数据库和需要保持的数据等4.12 WORKDIR(设置工作目录)指定RUN、CMD与ENTRYPOINT 命令的工作目录。格式: WORKDIR /path/to/workdir5、完整的Dockerfile示例5.1 创建mytomcat文件FROM centos #设置作者 MAINTAINER xiaoming admion@qq.com #拷贝tomcat jdk 到镜像内并解压 ADD apache-tomcat-8.5.30.tar.gz /usr/local/tomcat ADD jdk-8u202-linux-x64.tar.gz /usr/local/jdk #设置工作目录 ENV MYPATH /usr/local WORKDIR $MYPATH #配置jdk 和tomcat的环境变量 ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_202 ENV CATALINA_HOME /usr/local/tomcat/apache-tomcat-8.5.30 ENV CATALINA_BASE /usr/local/tomcat/apache-tomcat-8.5.30 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin #设置暴露的端口 EXPOSE 8080 #运行tomcat CMD /usr/local/tomcat/apache-tomcat-8.5.30/bin/startup.sh && tail -f /usr/local/tomcat/apache-tomcat-8.5.30/logs/catalina.out
5.2 构建镜像docker build -f mytomcat -t xm/tomcat:1.8 .
注意:docker build 命令最后要有一个. 5.3 运行镜像docker run -d -p 8080:8080 --name mytomcat1.8 -v /usr/local/tomcat/logs:/usr/local/tomcat/apache-tomcat-8.5.30/logs/ -v /usr/local/tomcat/webapps:/usr/local/tomcat/apache-tomcat-8.5.30/webapps/ xm/tomcat:1.8
IT技术分享社区 CSDN:https://blog.csdn.net/xishining 个人博客网站:https://
|