Docker——自定义镜像

news2024/11/20 3:23:01

目录

一、镜像结构

二、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年IBDP大考计划安排

2023年5月IB考试时间已经公布。2023年5月IB考试时间表是以时区的不同分为A、B、C三个考区。具体安排如下: Zone A:UTC 12 至 UTC 3.5 Zone B:UTC 3 至 UTC 0 Zone C:UTC -1 至 UTC -10 中国属于东八区UTC8,属于Zone A考…

Linux学习:工程搭建

一、gcc main.c -o main 创建一个main.c文件 gedit main.c 在里边写进代码 #include <stdio.h>void main() {printf("hello world\n"); } 编译代码 gcc main.c -o main 输入ls&#xff0c;可以看到生成了一个可行性的main 执行main&#xff0c;即可执行…

2022年中科大分子生物学考试题、复习资料汇总(往年真题复习资料)

文章目录1.2022复习题2.2021复习题3.2020复习题4.2018复习题5.2015-2016复习题6.Key:复习重点7.随堂测验-平时成绩分子生物学复习资料及往年考题1.2022复习题 1.分子生物学复习资料及往年考题&#xff1a;&#xff08;已完结&#xff09; &#xff08;1&#xff09;资料完整版…

Tomcat的安装和运行

安装Tomcat 安装某一个软件,我们当然是要去官网.为了防止很多朋友找不到资源,我们这里直接放出官网路径. https://tomcat.apache.org/download-80.cgi 直接点击进入官网下载页面即可.选择Tomcat8,点击Core的zip包下载即可. 下载好以后,我们进入到下载的目录.选择到 我们下载…

js学习笔记

1.js代码要写在script标签中 <script type"text/javascript">for (let i0;i<5;i){document.write("<h1 stylecolor:red;>hello world</h1>")} </script>2.可以通过src的方式指定读取js文件进来&#xff0c;注意如果用这种方式…

[SECCON CTF 2022] crypto 部分复现

目录 janken vs kurenaif pqpq 以前写过了&#xff0c;官方方法一样 witches_symmetric_exam this is not lsb insufficient CVP BBB 当时仅pqpq差点完成&#xff0c;有个小错。其它都无从下手。终于看到wp一一试一下。原文 janken vs kurenaif 这个情况第一回见&#…

判断国际象棋棋盘中一个格子的颜色

题目链接 判断国际象棋棋盘中一个格子的颜色 题目描述 注意 coordinates.length 2‘a’ < coordinates[0] < ‘h’‘1’ < coordinates[1] < ‘8’ 解答思路 棋盘是不变的&#xff0c;只需要根据行列的奇偶性判断格子是否为白色即可 代码 方法一&#xff1…

爆火的OpenAi的ChatGPT聊天机器人注册和使用攻略

先来看看他的效果怎木样: 哇塞!是不是很奈斯!!! 一. 对OpenAi进行注册登录(需要翻墙) OpenAI APIAn API for accessing new AI models developed by OpenAIhttps://beta.openai.com/ 二. 购买一个虚拟号码用于手机号注册 nullReceive sms online on virtual numbers of SMS…

C2--Vivado开发环境之bit生成,文件组成,代码固化2022-12-08

1.FPGA的开发流程 Fpga代码的开发分为以下流程&#xff1a; 设计定义&#xff08;处于架构阶段&#xff0c;对需求进行定义&#xff0c;分析&#xff0c;模块划分&#xff09;设计输入&#xff08;verilog RTL代码输入、原理图&#xff09;功能仿真分析和综合&#xff08;由源…

真人踩过的坑,告诉你避免自动化测试入门常犯的10个错误

虽然从自己的错误中学习也不错&#xff0c;但从别人的错误中学习总是更好的。 作为一个自动化测试人员&#xff0c;分享常见的容易犯的10个错误&#xff0c;可以从中吸取教训&#xff0c;引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时&…

python服务调用-基于http的通信写协议(flask)-linux

服务器要部署一套算法, 我们的部署在该服务器上的数据平台需要调用 该算法进行一些操作, 要点主要两方面: 1.客户端发请求(同时传数据给服务). 2. 服务端的算法响应给请求,处理结束后,返回数据给客户端.这里一般第一次使用http协议的时候有点懵,其实是非常简单,我这里给了一个…

基于HTML+CSS+JavaScript “小味鲜“餐厅网页设计

基于HTMLCSSJavaScript "小味鲜"餐厅网页设计 每博一文案 师父说“生活中的负能大多来于圈子里的抱怨“&#xff0c;有时候&#xff0c;你不想做别人情绪的垃圾桶。 却不得不接受他们的吐槽&#xff0c;你嫌弃身边人无休止的抱怨&#xff0c;但又不知不觉被他们影响 …

12.感知机以及多层感知机(MLP),激活函数

x和w都是向量&#xff0c;b是标量&#xff0c;感知机的输出是&#xff1a;w和x做内积之后偏移b&#xff0c;最后加上一个函数&#xff08;这个函数很多种选择&#xff09;。 1. 训练感知机 如果当前是第i个样本&#xff0c;yi是真实标签值&#xff0c;<w,xi>b得到的是预测…

浅浅的分析Spring底层事务原理

Spring事务底层原理一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务的过程四、Spring事务传播机制五、Spring事务传播机制分类&#xff08;1&#xff09;案例分析、情况1&#xff08;2&#xff09;案例分析、情况2&#xff08;3&#xff09;…

【正点原子FPGA连载】第三十二章OV5640摄像头RGB-LCD显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第三十二章OV564…

深度学习——批量归一化(笔记)

主流的卷积网络基本都设计批量归一化这个层 1.为什么要批量归一化&#xff1f; ①网络层很深&#xff0c;数据在底层&#xff0c;损失函数在最顶层。反向传播后&#xff0c;顶层的梯度大&#xff0c;所以顶层训练的较快。数据在底层&#xff0c;底层的梯度小&#xff0c;底层训…

【开源项目】震惊JDBC查询比MyBatis查询慢

震惊JDBC查询比MyBatis查询快&#xff1f; 文章编写起始原因&#xff0c;在编写项目的时候碰到一个深坑&#xff0c;JDBC获取5000条数据&#xff0c;居然耗时261s&#xff0c;MyBatis同样的操作&#xff0c;耗时12s左右&#xff0c;震惊。看到这里下巴都快掉下来了。不是网上都…

Pyqt5 Key value动态创建 QTreeWidget

在自己的应用上&#xff0c;需要根据读取的 值来创建 目录与子页&#xff0c;并打开对应的界面 实现思路 1、定义数组 存放 &#xff5b;&#xff08;Key value index &#xff09;.....&#xff08;Key_n value_n index_n &#xff09;&#xff5d; 2、获取相关数据&#x…

【Java开发】 Spring 09 :Spring Data REST 实现并访问简单的超媒体服务

Spring Data REST 是提供一个灵活和可配置的机制来编写可以通过HTTP公开的简单服务&#xff0c;简单来说&#xff0c;而且可以省去大部分controller和services的逻辑&#xff0c;因为Spring Data REST 已经为你都做好了&#xff0c;目前支持JPA、MongoDB、Neo4j、Solr、Cassand…

Ribbon负载均衡

Ribbon负载均衡 Ribbon是微服务架构中&#xff0c;可以作为负载均衡的技术实现&#xff0c;如下图所示 Ribbon负载均衡 1、消费者发起请求2、被负载均衡拦截器拦截3、将请求信息交给RibbonLoadBanlancerClient4、获取url的服务id5、DynamicServerListLoadBalancer拿到id去eur…