网站推广岗位职责,广告设计公司工作规范流程,兰州关键词网络推广,深圳设计网站哪个好文章目录 一、Dockerfile自定义镜像1.1 镜像结构1.2 Dockerfile语法 二、构建Java项目三、基于java8构建java四、小结 一、Dockerfile自定义镜像
常见的镜像在DockerHub就能找到#xff0c;但是我们自己写的项目就必须自己构建镜像了。
而要自定义镜像#xff0c;就必须先了… 文章目录 一、Dockerfile自定义镜像1.1 镜像结构1.2 Dockerfile语法 二、构建Java项目三、基于java8构建java四、小结 一、Dockerfile自定义镜像
常见的镜像在DockerHub就能找到但是我们自己写的项目就必须自己构建镜像了。
而要自定义镜像就必须先了解镜像的结构才行。
1.1 镜像结构
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
例如mysql镜像的组成结构如下图所示 简单来说镜像就是在系统函数库、运行环境基础上添加应用程序文件、配置文件、依赖文件等组合然后编写好启动脚本打包在一起形成的文件。
我们要构建镜像其实就是实现上述打包的过程。
1.2 Dockerfile语法
构建自定义的镜像时并不需要一个个文件去拷贝打包。
我们只需要告诉Docker我们的镜像的组成需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么将来Docker会帮助我们构建镜像。
而描述上述信息的文件就是Dockerfile文件。
Dockerfile就是一个文本文件其中包含一个个的指令(Instruction)用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
在这里插入图片描述
更新详细语法说明可以参考官网文档 https://docs.docker.com/engine/reference/builder
二、构建Java项目
需求基于Ubuntu镜像构建一个新镜像运行一个java项目
步骤1新建一个空文件夹docker-demo步骤2拷贝我们打包好的java项目docker-demo.jar文件到docker-demo这个目录步骤3拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录步骤4拷贝课前资料提供的Dockerfile到docker-demo这个目录其中的内容如下
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME$JAVA_DIR/java8
ENV PATH$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar步骤5进入docker-demo 将准备好的docker-demo上传到虚拟机任意目录然后进入docker-demo目录下。这里使用的finalshell远程连接Centos7虚拟机 步骤6运行命令
docker build -t javaweb:1.0 .
# 一定不要忘记了最后有个.,表示从当前目录开始构建最后访问 http://192.168.207.129:8090/hello/count其中的ip改成自己的虚拟机ip具体的端口后面的路径地址也和自己的java项目有关。
三、基于java8构建java
虽然我们可以基于Ubuntu基础镜像添加任意自己需要的安装包构建镜像但是却比较麻烦。所以大多数情况下我们都可以在一些安装了部分软件的基础镜像上做改造。
例如构建java项目的镜像可以在已经准备了JDK的基础镜像基础上构建。
需求基于java:8-alpine镜像将一个Java项目构建为镜像
实现思路如下 ① 新建一个空的目录然后在目录中新建一个文件命名为Dockerfile ② 将自己打包好的Java项目docker-demo.jar拷贝到这个目录中 ③ 编写Dockerfile文件 a 基于java:8-alpine作为基础镜像 b 将app.jar拷贝到镜像中 c 暴露端口 d 编写入口ENTRYPOINT 内容如下
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar④ 使用docker build命令构建镜像 ⑤ 使用docker run创建容器并运行
四、小结 Dockerfile的本质是一个文件通过指令描述镜像的构建过程 Dockerfile的第一行必须是FROM从一个基础镜像来构建 基础镜像可以是基本操作系统如Ubuntu。也可以是其他人制作好的镜像例如java:8-alpine