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

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

基础镜像推荐

1. BusyBox

  • 描述:一个包含了许多常用UNIX工具的轻量级镜像。

  • 镜像名称busybox

  • 示例命令

    bash 复制代码
    kubectl run -it --rm debug --image=busybox -- sh

2. Alpine

  • 描述:一个基于Alpine Linux的极小型镜像,包含基本的包管理工具(如apk)。

  • 镜像名称alpine

  • 示例命令

    bash 复制代码
    kubectl run -it --rm debug --image=alpine -- sh

3. Nginx

  • 描述:一个流行的反向代理和HTTP服务器,可以用于测试Web服务的响应。

  • 镜像名称nginx

  • 示例命令

    bash 复制代码
    kubectl run -it --rm debug --image=nginx -- bash

4. Debian

  • 描述:一个包含更多系统工具和包的较大镜像。

  • 镜像名称debian

  • 示例命令

    bash 复制代码
    kubectl run -it --rm debug --image=debian -- bash

5. Ubuntu

  • 描述:另一个常用的较大镜像,提供全面的系统工具和包管理。

  • 镜像名称ubuntu

  • 示例命令

    bash 复制代码
    kubectl run -it --rm debug --image=ubuntu -- bash

专属基础镜像

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

第一个进程

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

复制代码
exec java -jar /${JAR_FILE_NAME}

JAVA 虚拟机设置

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

dockerfile 复制代码
# 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" ]]
then
  defaultJvmHeapSizeInMB=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"
相关推荐
阿里云云原生21 分钟前
让 OpenClaw 受控运行: SLS 一键接入与审计
阿里云·云原生·sls·openclaw
梵得儿SHI21 分钟前
SpringCloud 微服务实战:支付全链路生产级落地(接口对接 + 异步通知 + 订单状态闭环)
spring·spring cloud·微服务·微信支付·支付模块·支付集成·支付系统架构设计
小二·37 分钟前
企业级网络安全深度解析:从协议层到云原生的攻防实战与架构设计
安全·web安全·云原生
一叶飘零_sweeeet1 小时前
微服务接口设计全解:RESTful/RPC 规范、兼容方案与生产级实战
微服务·rpc·restful
风向决定发型丶2 小时前
K8S readinessGates详解
云原生·容器·kubernetes
风向决定发型丶2 小时前
K8S中podManagementPolicy和updateStrategy的关系
云原生·容器·kubernetes
一叶飘零_sweeeet13 小时前
服务注册发现深度拆解:Nacos vs Eureka 核心原理、架构选型与生产落地
微服务·云原生·eureka·nacos·架构·注册中心
殷紫川19 小时前
从 0 到 1 落地异地多活:单元化、数据同步与流量调度的核心壁垒全击穿
微服务·架构
JiaHao汤20 小时前
微服务注册中心深度解析:Eureka、Consul、Nacos 从原理到实战
spring cloud·微服务·eureka·consul
const_qiu20 小时前
微服务测试项目架构设计与实践
微服务·云原生·架构