Docker——自定义镜像

目录

一、镜像结构

二、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基础上添加依赖、安装程序、完成整个应用的安装和配置

Docker——自定义镜像_第1张图片

二、Dockerfile

下面开始自定义镜像

Dockerfile:就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每个指令都会形成一层Layer

Docker——自定义镜像_第2张图片

 2.1 案例:基于Ubuntu镜像构建一个新镜像,运行一个java项目

Docker——自定义镜像_第3张图片

  2.1.1 新建文件夹docker-demo

       放构建镜像所需要的资料

   2.1.2 拷贝docker-demo.jar到docker-demo

Docker——自定义镜像_第4张图片

   2.1.3 将jdk8.tar.gz文件放到docker-demo目录

Docker——自定义镜像_第5张图片

   2.1.4 将Dockerfile移动到docker-demo

          我们构建整个项目是基于Ubuntu镜像(这个镜像是干干净净的基础镜像,什么也没有)来做的,在这个的过程中主要是来安装jdk

Docker——自定义镜像_第6张图片

 Docker——自定义镜像_第7张图片

   2.1.5 进入docker-demo

发现已经有了

Docker——自定义镜像_第8张图片

   2.1.6 构建镜像并运行

 build:构建的意思

 -t :全名是-tag

 javaweb:我们起的一个名称,后面的1.0是版本,我们可以随便取

  . :dockerfile所代表的的目录 

 注意后面别忘了有一个点。  这个点是“  .” 前面有一个空格

 Docker——自定义镜像_第9张图片

跑起来

Docker——自定义镜像_第10张图片

192.168.174.100 是我们虚拟机的静态地址   8090是我们配置的端口号   后面是路径

Docker——自定义镜像_第11张图片

  2.2  java:8-alpine镜像,将一个Java项目构建为镜像

我们实现了上面这个文档,发现还是挺麻烦的

在刚刚的步骤中,只有下图框起来的是构架java项目的,因为java项目不需要安装

除了框起来的这句和最下面的两行,其余的都是安装jdk

Docker——自定义镜像_第12张图片

我们的每一个项目都不需要执行上面完整的流程,在配置中,下面这些选中的不会改变,我们可以把这些构建好做一个镜像先放到那里,以后都在这个基础上进行构建,这就是分层的好处

Docker——自定义镜像_第13张图片

 

然后java:8-alpine镜像就替我们做了这个东西,他是一个体积非常小的一个jdk镜像,如果我们构建项目的时候是以他为基础,则上面我们选中的都不用做了

将dockerfile文件修改成下面这个样子

Docker——自定义镜像_第14张图片

 

Docker——自定义镜像_第15张图片

 

我们来实验一下

Docker——自定义镜像_第16张图片

 

三、总结

Dockerfile的本质是一个文件,通过指令描述镜像的构建过程

Dockerfile的第一行必须是FROM,从一个基础镜像来构建

基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,比如java:8-alpine

你可能感兴趣的:(docker,docker,运维,容器)