怎么套网站,外贸seo是什么意思,大理州建设局网站,宁夏 网站制作1.Dockerfile
1.1 什么是Dockerfile Dockerfile可以认为是 Docker镜像的描述文件#xff0c;是由一系列命令和参数构成的脚本 。主要作用是 用来构建docker镜像的构建文件 。 通过架构图可以看出通过DockerFile可以直接构建镜像 1.2 Dockerfile解析过程 构建镜像步骤#xf…1.Dockerfile
1.1 什么是Dockerfile Dockerfile可以认为是 Docker镜像的描述文件是由一系列命令和参数构成的脚本 。主要作用是 用来构建docker镜像的构建文件 。 通过架构图可以看出通过DockerFile可以直接构建镜像
1.2 Dockerfile解析过程 构建镜像步骤 1使用通过命令“touch Dockerfile”创建Dockerfile文件然后在文件里编写命令 Dockerfile内容要求 1.每条保留字指令都必须为大写且后面都要跟至少一个参数 2.指令按照从上到下顺序执行 3.#表示注释 4.每条指令都会创建一个新的镜像层并对镜像进行提交 2构建命令“docker build -t 镜像名:版本 Dockerfile所在目录 ” #“.”表示当前目录会把Dockerfile所在的目录里的所有文件打包 docker build -t mycentos:1.0 . 如果不想将Dockerfile所在目录的所有文件打包可以使用 dockerignore过滤 1.在 Dockerfile所在的目录创建 dockerignore文件 2.然后在里面编写需要过滤的文件“#”为注释参考如下 /temp排除根目录下任意子目录中所有名字以temp开头的文件或目录。如文件/somedir/temporary.txt会被排除。 //temp*排除根目录下任意两级子目录中所有名字以temp开头的文件或目录。如文件/somedir/subdir/temporary.txt会被排除。 temp?排除根目录下名字以temp开头后面为任意一个字符的文件或目录。如目录/tempa和/tempb都会被排除。 1.3 Dockerfile的保留命令 官方说明: Dockerfile reference | Docker Docs 保留字 作用 FROM 当前镜像是基于哪个镜像的 第一个指令必须是FROM MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 构建镜像时需要运行的指令 EXPOSE 当前容器对外暴露出的端口号仅仅是声明 WORKDIR 指定在创建容器后终端默认登录进来的工作目录一个落脚点 ENV 用来在构建镜像过程中设置环境变量 ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包 COPY 类似于ADD拷贝文件和目录到镜像中 将从构建上下文目录中原路径的文件/目录复制到新的一层的镜像内的目标路径位置 VOLUME 容器数据卷用于数据保存和持久化工作仅仅是声明 CMD 指定一个容器启动时要运行的命令 Dockerfile中可以有多个CMD指令但只有最后一个生效CMD会被docker run之后的参数替换 ENTRYPOINT 指定一个容器启动时要运行的命令 ENTRYPOINT的目的和CMD一样都是在指定容器启动程序及其参数
1 FROM 命令 基于那个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像 必须作为Dockerfile的第一个指令出现 语法: FROM image FROM image[:tag] 使用版本不写为latest FROM image[digest] 使用摘要 #例 FROM centos:7 FROM openjdk:8-jre
2 MAINTAINER 命令 镜像维护者的姓名和邮箱地址[废弃] 语法: MAINTAINER name
3 RUN 命令 RUN指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于Dockerfile中的下一步 语法: RUN command (shell form, the command is run in a shell, which by default is /bin/sh -c on Linux or cmd /S /C on Windows) RUN echo hello RUN [executable, param1, param2] (exec form) RUN [/bin/bash, -c, echo hello] #例 RUN [yum,install,-y,vim] RUN cd /root RUN mv apache-tomcat-8.5.61 tomcat
4 EXPOSE 命令 用来指定构建的镜像在运行为容器时对外暴露的端口 语法: EXPOSE 80/tcp 如果没有显示指定则默认暴露都是tcp EXPOSE 80/udp #例 EXPOSE 8080
5 CMD 命令 用来为启动的容器指定执行的命令,在Dockerfile中只能有一条CMD指令。如果列出多个命令则只有最后一个命令才会生效。 注意: Dockerfile中只能有一条CMD指令。如果列出多个命令则只有最后一个命令才会生效。 语法: CMD [executable,param1,param2] (exec form, this is the preferred form) CMD [param1,param2] (as default parameters to ENTRYPOINT) CMD command param1 param2 (shell form) #例 CMD [java,-jar,xxx.jar] CMD java -jar xxx.jar
6 WORKDIR 命令 用来为Dockerfile中的任何RUN、CMD、ENTRYPOINT、COPY和ADD指令设置工作目录。如果WORKDIR不存在即使它没有在任何后续Dockerfile指令中使用它也将被创建。 语法: WORKDIR /path/to/workdir WORKDIR /a WORKDIR b WORKDIR c 注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径则该路径将与先前WORKDIR指令的路径相对 #例 WORKDIR /root/data
7 ENV 命令 用来为构建镜像设置环境变量。这个值将出现在构建阶段中所有后续指令的环境中。 语法 ENV key value ENV keyvalue ... #例 ENV BASE_DIR /apps/data 坏境变量用法$变量名称 8 ADD 命令 用来从context上下文复制新文件、目录或远程文件url并将它们添加到位于指定路径的映像文件系统中。 语法: ADD hom* /mydir/ 通配符添加多个文件 ADD hom?.txt /mydir/ 通配符添加 ADD test.txt relativeDir/ 可以指定相对路径 ADD test.txt /absoluteDir/ 也可以指定绝对路径 ADD url #例 ADD xxx.jar . ADD https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.68/bin/apache-tomcat-9.0.68.tar.gz
9 COPY 命令 用来将context目录中指定文件复制到镜像的指定目录中 语法: COPY src dest COPY [src,... dest] #例 COPY xxx.txt .
10 VOLUME 命令 用来定义容器运行时可以挂在到宿主机的目录 语法: VOLUME [/data]
11 ENTRYPOINT命令 用来指定容器启动时执行命令和CMD类似 语法: [executable, param1, param2] ENTRYPOINT command param1 param2 #例 ENTRYPOINT java -jar xxx.jar ENTRYPOINT [java,-jar,xxx.jar] ENTRYPOINT指令往往用于设置容器启动后的 第一个命令 这对一个容器来说往往是固定的。 CMD指令往往用于设置容器启动的第一个命令的 默认参数 这对一个容器来说可以是变化的。 1.4 Dockerfile构建springboot项目部署
1.准备springboot可运行项目 2.将可运行项目放入linux虚拟机中 3.编写Dockerfile FROM openjdk:8 WORKDIR /ems ADD ems.jar /ems EXPOSE 8989 ENTRYPOINT [java,-jar] CMD [ems.jar] 4.构建镜像 [rootlocalhost ems]# docker build -t ems . 5.运行镜像 [rootlocalhost ems]# docker run -p 8989:8989 ems 6.访问项目 http://10.15.0.8:8989/ems/login.html