Docker——自定义镜像

向右看齐 2024-03-31 11:30 289阅读 0赞

目录

一、镜像结构

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

9a6783424d3648749cd69af7e89ed464.png

二、Dockerfile

下面开始自定义镜像

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

2888c8e9bad2415f875b561dfee1cc94.png

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

c03cabc5b738451bbf663cd35a6c53ed.png

2.1.1 新建文件夹docker-demo

放构建镜像所需要的资料

83e1a817e2b3441fa84069cee88951a3.png

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

4615efe7237b4e679c092113fa205963.png

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

7d7d99d3e16f4ffe847ad10d01ea85b2.png

2.1.4 将Dockerfile移动到docker-demo

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

07354aba38bb4a9189dedcb64f328250.png

f1ba4d07cbbb45ca9d26013d00b994bc.png

2.1.5 进入docker-demo

发现已经有了

1b9262b04849413896edaf2a28fb21ef.png

2.1.6 构建镜像并运行

build:构建的意思

-t :全名是-tag

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

. :dockerfile所代表的的目录

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

7788e288be624d6c97e9743fbb31fecb.png

跑起来

a22123171027406dadc31289fd5338af.png

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

886c01b0b78d45769a9b6c79bb435df2.png

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

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

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

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

89437127fee04c1983a9f58bff7a7d8b.png

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

5538d926d00c4b09a4c1282f11edd5bd.png

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

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

a82cdb48544f4db3963b26b0aa7ffeb4.png

2cbad21f3ab641c7a893a76e439d1043.png

我们来实验一下

d1d9d14ce2134f16945492f2e08d6701.png

三、总结

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,289人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Docker(二) 定义镜像

    一、前言 记得上半年有一个需求是给服务(mysql)兼容oracle数据库,之前没有怎么接触过oracle数据库,也没有安装过,于是从同事那里要来了安装包(windows