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

云原生化 - 基础镜像(简约版)

根据最佳实践的建议,每个容器只做一件事,并尽可能减少基础镜像的内容,这里列举一些常用的基础镜像,可供选择。(完整版请查阅这里)

基础镜像推荐

1. BusyBox

  • 描述:一个包含了许多常用UNIX工具的轻量级镜像。
  • 镜像名称busybox
  • 示例命令
    kubectl run -it --rm debug --image=busybox -- sh
    

2. Alpine

  • 描述:一个基于Alpine Linux的极小型镜像,包含基本的包管理工具(如apk)。
  • 镜像名称alpine
  • 示例命令
    kubectl run -it --rm debug --image=alpine -- sh
    

3. Nginx

  • 描述:一个流行的反向代理和HTTP服务器,可以用于测试Web服务的响应。
  • 镜像名称nginx
  • 示例命令
    kubectl run -it --rm debug --image=nginx -- bash
    

4. Debian

  • 描述:一个包含更多系统工具和包的较大镜像。
  • 镜像名称debian
  • 示例命令
    kubectl run -it --rm debug --image=debian -- bash
    

5. Ubuntu

  • 描述:另一个常用的较大镜像,提供全面的系统工具和包管理。
  • 镜像名称ubuntu
  • 示例命令
    kubectl run -it --rm debug --image=ubuntu -- bash
    

专属基础镜像

公司内部一般会构建自己的开发框架,并将一些常用的工具放在里面。这里列举一些制作自己的镜像时,需要注意的地方。

第一个进程

容器推荐第一个进程为主进程,这样可以保证容器的生命周期和进程的生命周期是一致的。表现在在制作容器镜像时,可使用下面的命令运行主进程:

exec java -jar /${JAR_FILE_NAME}

JAVA 虚拟机设置

容器没有使用虚拟化技术,只是利用了 linux 上 namespace 和 cgroup 实现囚笼的效果。很多语言实现的时候,有自己的虚拟化技术,比如 JVM,这个时候要设置正确的配置,才能让对应的虚拟化技术有效,这里列举以 JVM 为例做一个例子。

# Specify heap size options
defaultJvmHeapSizeInBytes=`cat /sys/fs/cgroup/memory/memory.limit_in_bytes | xargs echo -n`
defaultJvmHeapSizeInMB=$(( defaultJvmHeapSizeInBytes/1024/1024*8/10 ))
if [[ "${defaultJvmHeapSizeInMB}" -gt "8192" || "$defaultJvmHeapSizeInMB" -le "0" ]]
thendefaultJvmHeapSizeInMB=2048
fi
jvmHeapSizeInMB=${JVM_HEAP_SIZE_IN_MB:-${defaultJvmHeapSizeInMB%.*}}
HEAP_OPTS="-Xms${jvmHeapSizeInMB}M -Xmx${jvmHeapSizeInMB}M"JAVA_OPTS="-Djava.awt.headless=true -Dawt.toolkit=sun.awt.HToolkit  -DPWD_PATH=$PWD_PATH  -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS"
http://www.lryc.cn/news/457895.html

相关文章:

  • 云计算相关
  • 人机协作:科技与人类智慧的融合
  • keras yolo8目标检测
  • PowerJob做定时任务调度
  • 前后端分离开发YApid
  • leetcode 22.括号生成
  • 如何启动一个OpenSearch
  • 自媒体工具箱 v1.0,支持涂抹加水印、无水印下载、加水印、消除原声、视频压缩
  • python 自学总结
  • Java - WebSocket
  • 【大模型】RMS Normalization原理及实现
  • 视觉检测系统实时识别工地安全帽佩戴情况
  • 【element-tiptap】报错Duplicate use of selection JSON ID cell at Selection.jsonID
  • STM32工程环境搭建(库函数开发)
  • 大数据新视界 --大数据大厂之大数据如何重塑金融风险管理:精准预测与防控
  • 【C# 网络编程】基本概念
  • 系统架构设计师-下午案例题(2018年下半年)
  • StarRocks报错:Getting analyzing error. Detail message: Unknown database ‘你的库名‘.
  • 【原创教程】电气电工23:电气柜的品牌及常用型号
  • AI引起用人格局变动,个人如何应对这一趋势
  • 小程序项目实践(一)--项目的初始化以及前期的准备工作
  • 宝藏CSS样式网站,开发一些酷炫的特效
  • vscode报错No module named ‘Crypto‘
  • 机器学习中的多模态学习:用C/C++实现高效模型
  • Java 运行机制及运行过程
  • IC开发——数字电路设计简介
  • openmmlab实现图像超分辨率重构
  • 四、远程登录到Linux服务器
  • Qt开发全指南:从基础到高级
  • 【算法】——双指针算法合集(力扣)