Dockerfile是什么
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
Dockerfile保留字
参数 | 说明 | 备注 |
---|---|---|
FROM | 基础镜像。当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板。第一条必须是from | 出现位置:一般都是在dockerfile的第一行。 当前镜像哪个基础镜像 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 | |
RUN | shell格式: RUN<命令行命令> #<命令行命令>等同于,在终端操作的shell命令。 例如:RUN yum -y install vim exec格式: RUN["可执行文件","参数1","参数2"] #例如: #RUN ["./test.php","dev","offline"] 等价于 RUN ./test.php dev offline | |
EXPOSE | 当前容器队尾暴露出的端口 | |
WORKDIR | 指定在创建容器后,终端默认登录的进入工作目录。一个落脚点 | 例如: docker -it ubuntu bash 进入后,pwd.可以发现是 / 的 |
USER | 指定该镜像以什么样的用户去执行。如果不指定,默认是root | |
ENV | 用来在构建镜像过程中设置的环境变量 | |
ADD | 将宿主机目录下的文件拷贝进镜像且会自动处理url和解压tar压缩包 | |
COPY | 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录 复制到新的一层镜像内的<目标路径> | |
VOLUME | 容器数据卷,用于数据保存和持久化工作 | |
CMD | 见下文CMD命令 | CMD和RUN命令的区别: CMD是在docker run时候运行的 RUN是在docker build是运行的 |
docker构建java镜像步骤
将maven项目进行打包
找到对应的jar包目录 通过cmd执行jar(这步一定要测试)
如果是上面图片效果的那么你打包就成功了
如果是这种,他说主清单没得属性,他是运行不了的
把true改成false 然后重新打包运行 就可以了
如果不去解决这个问题那么在docker运行的时候会出错的 所以必须要显示出spring的logo才可以执行后面的操作
在将jar包拖进linux目录里面
编写Dockerfile文件
FROM mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk
ADD docker_boot-0.0.1-SNAPSHOT.jar .
EXPOSE 6001
ENTRYPOINT [ "java", "-jar", "docker_boot-0.0.1-SNAPSHOT.jar" ]
构建镜像(操作命令在当前目录)
docker build -t java .
运行镜像
docker run -d -p 6001:6001 java
查看容器实例
[root@localhost dockerboot]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00d26c1b709a java "java -jar docker_bo…" 3 seconds ago Up 2 seconds 0.0.0.0:6001->6001/tcp, :::6001->6001/tcp amazing_kare
当显示当前状态的时候 就代表这成功了!