目录
一、镜像结构
二、Dockerfile
2.1 案例:基于Ubuntu镜像构建一个新镜像,运行一个java项目
2.1.1 新建文件夹docker-demo
2.1.2 拷贝docker-demo.jar到docker-demo
2.1.3 将jdk8.tar.gz文件放到docker-demo目录
2.1.4 将Dockerfile移动到docker-demo
2.1.5 进入docker-demo
2.1.6 构建镜像并运行
2.2 java:8-alpine镜像,将一个Java项目构建为镜像
三、总结
我们自己的服务一定要自己制作镜像,基于dockerfile自己定义镜像
一、镜像结构
镜像:将应用程序及其需要的系统函数库、环境、配置、依赖打包而成
镜像是分层结构,每一层称为一个Layer
Entrypoint:入口,是镜像中应用启动的命令
其他:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
二、Dockerfile
下面开始自定义镜像
Dockerfile:就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每个指令都会形成一层Layer
2.1 案例:基于Ubuntu镜像构建一个新镜像,运行一个java项目
2.1.1 新建文件夹docker-demo
放构建镜像所需要的资料
2.1.2 拷贝docker-demo.jar到docker-demo
2.1.3 将jdk8.tar.gz文件放到docker-demo目录
2.1.4 将Dockerfile移动到docker-demo
我们构建整个项目是基于Ubuntu镜像(这个镜像是干干净净的基础镜像,什么也没有)来做的,在这个的过程中主要是来安装jdk
2.1.5 进入docker-demo
发现已经有了
2.1.6 构建镜像并运行
build:构建的意思
-t :全名是-tag
javaweb:我们起的一个名称,后面的1.0是版本,我们可以随便取
. :dockerfile所代表的的目录
注意后面别忘了有一个点。 这个点是“ .” 前面有一个空格
跑起来
192.168.174.100 是我们虚拟机的静态地址 8090是我们配置的端口号 后面是路径
2.2 java:8-alpine镜像,将一个Java项目构建为镜像
我们实现了上面这个文档,发现还是挺麻烦的
在刚刚的步骤中,只有下图框起来的是构架java项目的,因为java项目不需要安装
除了框起来的这句和最下面的两行,其余的都是安装jdk
我们的每一个项目都不需要执行上面完整的流程,在配置中,下面这些选中的不会改变,我们可以把这些构建好做一个镜像先放到那里,以后都在这个基础上进行构建,这就是分层的好处
然后java:8-alpine镜像就替我们做了这个东西,他是一个体积非常小的一个jdk镜像,如果我们构建项目的时候是以他为基础,则上面我们选中的都不用做了
将dockerfile文件修改成下面这个样子
我们来实验一下
三、总结
Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
Dockerfile的第一行必须是FROM,从一个基础镜像来构建
基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,比如java:8-alpine