当前位置: 首页 > news >正文

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.xdnf.cn/news/1386649.html

相关文章:

  • Go Vendor 和 Go Modules:管理和扩展依赖的最佳实践
  • 项目一系列-第9章 集成AI千帆大模型
  • C/C++---预定义常量
  • iCloud 备份与 iTunes 备份:有何不同
  • Jenkins Pipeline(二)-设置Docker Agent
  • Python中的匿名函数详解(lambda)
  • 无人机固件升级与技术要点解析
  • 命令行操作:逻辑运算符、重定向与管道
  • Cesium 入门教程(十二):时间动画实例
  • AI共链·智存未来 | 绿算技术受邀出席华为AI SSD发布会
  • 预测模型及超参数:3.集成学习:[1]LightGBM
  • TDengine 3.3.7.0 新增性能基准工具 taosgen
  • Django开发规范:构建可维护的AWS资源管理应用
  • LRU 内存淘汰策略
  • 扩展中国剩余定理脚本(恢复密文c)
  • 匠心传承,古韵新生——记木雕名家龙巍的艺术人生
  • Android 打包适配15 版本(api 35)问题处理
  • 【观成科技】蔓灵花User下载者加密通信分析
  • 微硕WINSOK高性能NP沟道MOS管WSP4067在Type-C双向快充电源管理系统中的应用
  • 美摄科技受邀参加2025中关村论坛年会,以超高清车载影像技术赋能智慧出行新体验!
  • 4x12G-SDI(四链接12G-SDI)
  • Lambda 表达式在 PyQt/PySide 中的应用
  • 突破传统企业组网瓶颈:某科技公司智能组网服务项目深度解析
  • Docker部署单节点使用KRaft存储数据的Kafka与可视化界面Kafka-Map
  • 解决多种类潮湿敏感元器件的多温度、多时长的排潮烘干
  • 网络编程 04:TCP连接,客户端与服务器的区别,实现 TCP 聊天及文件上传,Tomcat 的简单使用
  • CVPR 强化学习模块深度分析:连多项式不等式+自驾规划
  • 判断语句中std::cin隐式转换为bool--重载operator bool()
  • 外卖大战之后,再看美团的护城河
  • autojs RSA加密(使用public.pem、private.pem)