Docker03-知识点整理

Docker03-知识点整理

文章目录

  • Docker03-知识点整理
  • 1-参考网址
  • 2-知识整理
  • 2-思考题
    • 1-Docker image和Docker Native image有什么区别
      • 1. Docker Image(Docker 镜像)
        • 定义
        • 特点
        • 构建和使用示例
      • 2. Docker Native Image(通常指 GraalVM Native Image 结合 Docker)
        • 定义
        • 特点
        • 构建和使用示例
      • 3. 两者的主要区别

1-参考网址


2-知识整理

  • 1)-Docker image和Docker Native image区别->Native不依赖JVM等运行环境,是单独的可执行文件,启动更快!
  • 2)

2-思考题

1-Docker image和Docker Native image有什么区别

问题背景:我在kafka官网进行软件下载的时候,Docker版本有2个可以下载的镜像,地址:https://kafka.apache.org/downloads

1. Docker Image(Docker 镜像)

定义

Docker 镜像是一个只读的模板,它包含了运行容器所需的一切,如代码、运行时环境、系统工具、系统库等。可以将其看作是一个软件包,这个软件包可以被部署到 Docker 环境中运行。

特点
  • 分层结构:Docker 镜像采用分层存储的方式构建,每一层都是一个文件系统的变更。这些层可以被多个镜像共享,从而节省磁盘空间。例如,多个不同的镜像可能都基于同一个基础操作系统层。
  • 通用性:Docker 镜像可以在任何支持 Docker 的环境中运行,具有良好的可移植性。只要目标环境安装了 Docker 引擎,就可以拉取并运行镜像。
  • 构建灵活性:可以通过编写 Dockerfile 来定义镜像的构建过程。Dockerfile 中包含了一系列的指令,如从基础镜像开始、安装软件包、复制文件等,通过执行这些指令可以构建出所需的镜像。
构建和使用示例
# 使用官方的 Python 3.9 镜像作为基础
FROM python:3.9# 设置工作目录
WORKDIR /app# 复制当前目录下的所有文件到工作目录
COPY . .# 安装依赖
RUN pip install -r requirements.txt# 暴露端口
EXPOSE 8000# 定义容器启动时执行的命令
CMD ["python", "app.py"]

使用 docker build 命令构建镜像:

docker build -t my-python-app .

使用 docker run 命令运行容器:

docker run -p 8000:8000 my-python-app

2. Docker Native Image(通常指 GraalVM Native Image 结合 Docker)

定义

GraalVM Native Image 是 GraalVM 提供的一项技术,它可以将 Java 代码编译成独立的可执行文件,这个可执行文件不依赖于 Java 虚拟机(JVM)。当将这种 Native Image 打包成 Docker 镜像时,就形成了 Docker Native Image。

特点
  • 启动速度快:由于 Native Image 不依赖于 JVM 的启动过程,因此启动速度比传统的基于 JVM 的应用程序要快得多。对于需要快速启动和响应的应用场景,如函数计算、微服务等,这是一个非常重要的优势。
  • 内存占用小:Native Image 不需要加载 JVM 所需的大量资源,因此内存占用相对较小。这可以提高资源利用率,降低运营成本。
  • 构建复杂性:构建 Native Image 需要额外的工具和配置,相对传统的 Docker 镜像构建要复杂一些。需要使用 GraalVM 的工具链进行编译,并且可能需要处理一些特定的依赖和配置问题。
构建和使用示例

首先,确保你已经安装了 GraalVM 并配置好了环境变量。然后,在项目中添加 GraalVM Native Image 插件(以 Maven 项目为例):

<plugin><groupId>org.graalvm.buildtools</groupId><artifactId>native-maven-plugin</artifactId><version>0.9.22</version><executions><execution><id>build-native</id><goals><goal>compile-no-fork</goal></goals></execution></executions>
</plugin>

使用以下命令编译 Native Image:

mvn package -Pnative

编写 Dockerfile 来构建 Docker Native Image:

# 使用一个轻量级的基础镜像
FROM debian:buster-slim# 复制编译好的 Native Image 到容器中
COPY target/my-native-app /app/my-native-app# 设置工作目录
WORKDIR /app# 定义容器启动时执行的命令
CMD ["./my-native-app"]

使用 docker build 命令构建镜像:

docker build -t my-native-app .

使用 docker run 命令运行容器:

docker run my-native-app

3. 两者的主要区别

  • 运行时依赖:Docker 镜像可以基于各种运行时环境,如 JVM、Python 解释器等;而 Docker Native Image 通常是不依赖于虚拟机或解释器的独立可执行文件。
  • 启动性能:Docker Native Image 的启动速度通常比传统的 Docker 镜像要快,因为它不需要启动虚拟机或解释器。
  • 内存占用:Docker Native Image 的内存占用相对较小,因为它不需要加载虚拟机或解释器所需的大量资源。
  • 构建复杂度:Docker 镜像的构建相对简单,只需要编写 Dockerfile 并执行 docker build 命令;而 Docker Native Image 的构建需要额外的工具和配置,相对复杂一些。

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

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

相关文章

华为 eNSP 从入门到精通:企业级网络仿真全攻略

一、eNSP 简介华为 eNSP&#xff08;Enterprise Network Simulation Platform &#xff09;是面向企业网络的虚拟化仿真平台&#xff0c;其核心架构基于分布式虚拟化引擎和真实设备镜像&#xff0c;具备以下技术亮点&#xff1a;高度仿真&#xff1a;可模拟华为 AR 路由器、x7 …

docker compose设置命令别名的方法

docker compose名字比较长&#xff0c;输入比较费事&#xff0c;可以为它设置别名来简化输入。1、Linux编辑~/.bash_aliasesalias dcdocker-compse编辑~/.bashrc&#xff0c;确认其包含以下内容&#xff1a;if [ -f ~/.bash_aliases ]; then. ~/.bash_aliasesfi重新加载 ~/.bas…

【RAGFlow代码详解-10】文本处理和查询处理

概述 文本处理和查询处理系统将自然语言查询转换为与 RAGFlow 的文档存储后端配合使用的优化搜索表达式。该系统支持中英文文本处理&#xff0c;具有专门的标记化、术语加权和查询增强技术。核心组件 FulltextQueryer 类 FulltextQueryer 类是查询处理和文本分析的主要接口。它…

利用机器学习优化Backtrader策略原理与实践

1. Backtrader框架概述 1.1 Backtrader简介 Backtrader是一个功能强大且灵活的Python库&#xff0c;专为量化交易策略的开发、测试和执行而设计。它提供了丰富的功能&#xff0c;包括数据获取、策略开发、回测、优化和绘图等。Backtrader的核心优势在于其模块化设计和高度可扩展…

CPTS-Pressed复现(XML-RPC)

该box主要是了解wordpress-XML-RPC 的使用 端口扫描只有80端口开启 可以使用wpscan进行扫描发现bak文件得到凭证&#xff0c;尝试登陆&#xff08;这里是将原密码的2021修改为2022尝试登陆&#xff0c;该主机发布时间为2022年&#xff09;发现有2FA&#xff0c;但是能够滥用 xm…

【机器学习深度学习】Embedding 与 RAG:让 AI 更“聪明”的秘密

目录 前言 一、RAG 的两大阶段 1. 知识库构建阶段 2. 查询检索与生成阶段 二、为什么 RAG 比单纯大模型更靠谱&#xff1f; 四、Embedding 在 RAG 中的作用 五、Embedding 的优势 六、Embedding 的挑战 七、RAG 优势与挑战对比 八、应用场景举例 总结 前言 在大模型…

python 转偶数

目录 python变量转偶数 box转偶数 python变量转偶数 x1 int(x1) // 2 * 2 y1 int(y1) // 2 * 2 x2 int(x2) // 2 * 2 y2 int(y2) // 2 * 2 box转偶数 def save_mp4(output_path,box_list,img_list,clip_start,clip_end):writer imageio.get_writer(output_path,fps30,c…

Linux - 中文显示乱码问题解决方法(编码查看及转换)- 学习/实践

1.应用场景 主要用于Linux中文显示乱码问题解决(编码查看及转换&#xff09; 2.学习/操作 1.文档阅读 Linux中文显示乱码问题解决方法(编码查看及转换&#xff09; - 整合侠 - 博客园 截图&#xff1a; 2.整理输出 TBD 后续补充 ... 3.问题/补充 TBD 后续补充 ...…

网络_协议

关键词&#xff1a; OSI是Open System Interconnect的缩写&#xff0c;意为开放式系统互联。 RTT &#xff1a; Round-Trip time 往返时间 RTO&#xff1a;Retransmission Timeout超时重传时间 MSL : OSI 七层模型和 TCP/IP 四层模型 OSI七层模型和TCP/IP五层模型&#…

vscode有的结构体不能补全,有的可以补全问题的解决.

定义了一个结构体,发现不能自动补全变量名称.而另外一个结构体却可以正常补全.经过研究发现是,新定义的结构体变量类型uint32_t,vscode认为其是错误类型导致的.暂时改为int型,后发现问题消失.可以正常补全了.由于工程使用cubeide生成,uint32_t定义在软件安装目录,并没有和项目文…

JavaScript 数组核心操作实战:最值获取与排序实现(从基础到优化)

在JavaScript开发中&#xff0c;数组的“最值获取”和“排序”是高频需求。本文将基于你的原始代码&#xff0c;系统解析数组最值获取、升序/降序排序的实现逻辑&#xff0c;通过“问题分析→代码优化→原理讲解”的流程&#xff0c;帮助你掌握更灵活、高效的数组操作方法&…

driver.js实现前端页面引导

1.安装 npm install driver.js2.实现代码示例 <template><div class"home-container"><!-- 页面内容 --><LeftPanel id"guide-left-panel" /><button id"guide-file-upload">文件上传</button><button i…

技术速递|使用 AI 应用模板扩展创建一个 .NET AI 应用与自定义数据进行对话

在本快速入门中&#xff0c;你将学习如何使用 .NET AI 应用模板创建一个 .NET AI 应用&#xff0c;与自定义数据进行对话。该模板旨在简化 .NET 构建 AI 应用的上手体验&#xff0c;帮助你处理常见的设置任务和配置。 先决条件 .NET 9.0 SDK 以下任一 IDE&#xff08;可选&am…

使用Cloudflare的AI Gateway代理Google AI Studio

1、说明详见&#xff1a;详见&#xff1a;https://developers.cloudflare.com/ai-gateway/usage/providers/google-ai-studio在"Google AI Studio"创建"API key" 在"Cloudflare"创建"AI Gateway"、获取"Account ID"2、在“G…

Scrapy 框架实战:构建高效的快看漫画分布式爬虫

一、Scrapy框架概述 Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架&#xff0c;它提供了强大的数据提取能力、灵活的扩展机制以及高效的异步处理性能。其核心架构包括&#xff1a; Engine&#xff1a;控制所有组件之间的数据流&#xff0c;当某个…

数据结构(C语言篇):(六)单链表算法题(下)

目录 前言 一、链表的回文结构 二、相交链表 三、环形链表​编辑 四、环形链表II 总结 前言 本篇博客将继续介绍单链表相关的算法题&#xff0c;包括了链表的回文结构、相交链表、环形链表等。现在就让我们正式开始吧&#xff01; 一、链表的回文结构 题目链接&#xff1a…

【AI自动化】VSCode+Playwright+codegen+nodejs自动化脚本生成

VSCodePlaywrightnodejs&#xff0c;能完美实现UI自动化全流程脚本自动生成和回放&#xff0c;生成的脚本方便维护&#xff0c;回放执行快速&#xff1b; 概述 Playwright 是由Microsoft开发的一个开源的跨浏览器自动化测试库&#xff0c;它支持Chromium、WebKit和Firefox浏览…

基于能量方法的纳维-斯托克斯方程高阶范数有界性理论推导-陈墨仙

写在最前面&#xff0c;圈外人&#xff0c;没有背书没有教育邮箱&#xff0c;发不了预印本&#xff0c;我先发csdn。刚才首发没复制完&#xff0c;抱歉&#xff0c;现在编辑下。基于能量方法的纳维-斯托克斯方程高阶范数有界性理论推导作者 陈墨仙邮件 2488888241qq.com摘要纳维…

Labview邪修01:贪吃蛇

从博主很小的时候就在掌机上玩过这个贪吃蛇的小游戏&#xff0c;突然有一天心血来潮的想Labview是不是也可以编这个小游戏&#xff0c;回忆一下童年&#xff01;然后就又了下面的这个程序&#xff0c;执行结果如下图所示。 基本功能&#xff1a; 1&#xff09;点击开始按钮&am…