赞
踩
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
制作镜像的Dockerfile文件所在的目录为dockerfile的上下文环境。
docker build的使用
docker build -t [imagename:tag] [filepath]
docker build:构建镜像,-t 指定image的name和版本,指定构建镜像的Dockerfile文件。
如果当前上下文内的Dockerfile文件名就是Dockerfile,在构建镜像的时候,命令如下
dcoker build -t mycentos:01 .
-t mycentos:表示构建的image名字为mycentos,并且指定版本为01
【 . 】 :最后的一个 点 表示指定当前上下文中的文件名为Dockerfile文件【如果是其他文件,指定文件名】
保留字 | 作用 |
---|---|
FROM | 当前镜像是基于哪个镜像[第一个指定必须是FROM] |
MANITAINER | 维护者的姓名和邮箱地址[废弃,意义不大] |
RUN | 构建镜像是需要运行的指令 |
EXPOSE | 当前容器对外 暴露的端口号 |
WORKDIR | 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点 |
ENV | 用来在构建镜像的过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进容器且ADD命令会自动处理URL和解压tar包 |
COPY | 类似于ADD,拷贝文件和目录到镜像中 将从构建上下文目录中<原路径>的文件/目录复制到新的一层镜像内的<目标路径>位置 |
VALUME | 容器数据卷,用户数据保存和持久化工作 |
CMD | 指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换 |
ENTRYPOINT | 指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动过程及其参数 |
FROM <image>
FROM <image>[:tag] 使用最新版本不写为latest
FROM <image>[@<digest>] 使用摘要
注意:
构建的docker镜像,如果没有服务,在运行为容器之后,会立刻结束进程。
如果有服务在镜像运行为容器之后一直运行[阻塞系统进程],则容器不会在启动后结束进程。
在image没有服务的情况下,启动为容器,会在容器启动后结束进程。
如果想进入容器,只能在启动容器的时候加上[-it],会在容器运行之后,直接进入容器内部。
其他情况同样适用,只要是在image启动为容器后直接进入容器内部,都可以使用该方法。
# 语法一,在RUN 后面直接写shell脚本
RUN <command>
#例句
RUN echo hello
#语法二,使用json格式[更像是string数组,将一条命令拆分为一个string数组]
RUN ["executable","param1","param2"]
#例句
RUN ["/bin/bash","-c","echo hello"]
EXPOSE 80/tcp 如果没有显示指定则默认暴露都是TCP
EXPOSE 80/udp
CMD ["executable","param1","param2"] (exec from,this is the preferred form)
CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
CMD command param1 param 2 (shel from)
WORKDIR /path/to/workdir
#例句
WORKDIR /a
WORKDIR b
WORKDIR /root/home/opt
注意:WORKDIR指令可以在Dockerfile中多次使用。如果提供了相对路径,则该路径将与先前的WORKDIR路径相对
ENV <key> <value>
ENV <key>=<value> ...
注意:在dockerfile中其他地方引用ENV定义的环境变量,可以使用$key来使用
例如:定义一个路径,在WORKDIR命令中引用
ENV BASE_DIR=/data/opt
WORKDIR $BASE_DIR
ADD hom* /mydir 通配符添加多个文件
ADD hom?.txt /mydir 通配符添加[?站位一个字符]
ADD test.txt /relativeDir/ 可以指定相对路径
ADD test.txt /absoluteDir/ 可以指定绝对路径
ADD url
COPY src dest
COPY ["<src>",...,"<dest>"]
VALUME ["/data"]
省略创建SpringBoot应用
3.2 将SpringBoot应用通过maven打包成jar包
3.3 将jar包上传到Dockerfile所在的上下文目录
3.4 编写Dockerfile文件
# 基于jre8镜像 FROM openjdk:8-jre #工作目录,在这里定义工作目录,下面所有的操作都是基于当前目录[目录不存在时,Dockerfile会地总创建] WORKDIR /app #将Dockerfile上下文目录中的SpringBoot应用jar包拷贝到镜像的工作目录 ADD docker-demo-0.0.1-SNAPSHOT.jar app.jar #容器可以向外暴露的端口 EXPOSE 8080 #镜像启动为容器时需要执行的命令,ENTRYPOINT 为必须要执行的命令 ENTRYPOINT ["java","-jar"] #CMD的参数可以在镜像运行的时候被替换掉,并且成为ENTRYPOINT命令的参数 CMD ["app.jar"]
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。