云容器实例 CCI | 大装置帮助中心
跳到主要内容

云容器实例 CCI

产品动态

版本号更新内容更新时间
云容器实例 v1.18.0支持创建应用时配置EIP DNAT规则,Health check probe支持自定义TimeoutSeconds、FailureThreshold,新增部分GPU监控指标 2024-09-30
云容器实例 v1.17.0支持根据负载弹性伸缩、支持分批发布以及回滚、指定实例删除重建、实例列表增加展示容器重启次数信息、应用监控及可观测能力升级 2024-09-30
云容器实例 v1.16.0支持展示实例中各容器状态及详情,支持修改容器名称 2024-08-30
云容器实例 v1.15.0支持设置应用滚动更新策略;支持配置容器存活和就绪探针;上线Ubuntu 20.04纯净版官方镜像;配置项和密钥操作接入云审计2024-07-30
云容器实例 v1.13.0支持设置容器实例优雅下线时间;支持容器实例定时伸缩;公共集群支持基于资源配额创建容器实例2024-05-30
云容器实例 v1.12.0专有集群支持设置亲和调度策略、支持headless服务、启动命令前端页面优化、专有集群支持使用Spot资源2024-04-30
云容器实例 v1.11.0支持AFS和ACS一级目录挂载、支持容器镜像快照、支持详情页一次性修改所有容器、公共集群支持复制应用2024-03-30

产品概述

云容器实例 CCI(Cloud Container Instance)提供Serverless架构下的容器资源。Serverless是一种云原生开发模型,可使开发者在无需管理服务器的情况下专注构建和运行应用。您可以对云容器实例进行简单的配置,便能轻松使用,降低您的部署成本以及运维成本。

产品优势

  1. 免运维:采用Serverless架构,您无需关心底层服务器,专注业务本身
  2. 低成本:配置简单,操作简便,降低部署和运维成本,即开即用,避免资源浪费

产品功能

多种规格选取

通过创建应用时选择不同的集群,支持不同规格的GPU计算资源。

多种存储卷挂载

支持挂载多种商汤AI大装置提供的云存储服务,您可以在创建应用时挂载已创建的存储卷,也可以在应用详情页面进行更改存储卷的挂载。

多种状态监控

提供多种监控看板,帮助您及时查看云容器实例的运行状态,目前提供的监控指标包括:CPU使用率、内存使用率、GPU使用率、显存使用率。

Web Terminal登录

支持Web Terminal的方式进行自动登录,您无需记录账户密码,选择容器实例一键登录到容器。

弹性伸缩

支持配置负责伸缩策略和定时伸缩策略,在达到负载阈值或在您指定的时间内对应用内实例数进行扩缩容,解放运维人力。

分批发布

支持在修改实例配置后进行分批发布,您可设置每批发布后暂停进行业务验证,同时支持回滚。

产品架构

image

应用场景

AI训练和推理

云容器实例支持AI训练和推理等应用的容器化方式运行,提供高性能网络和存储等硬件加速能力,帮助您按需、弹性使用资源:

  1. 基于云原生的容器技术,秒级创建和使用,并提供用户间的安全隔离
  2. 通过容器镜像的适配和定制,支持GPU、国产芯片等多种硬件规格
  3. 通过软硬件状态监测和告警机制,支持业务层对底层异常的及时感知以及进一步应对决策

弹性业务

云容器实例可根据业务流量波动灵活扩容,按需付费:

  1. Web Terminal访问方式,一键打开使用
  2. 支持用户自定义服务

计费说明

选择AI算力集群创建应用不收取费用,其中涉及购买高性能AI计算节点,不同规格的计算节点收费不同;

选择公共集群创建应用则会按量计费,选择不同的实例规格计费不同,具体收费详见产品控制台。

快速入门

  • 创建应用:您可以通过控制台创建应用的页面进行创建应用,其中需要自定义应用的名称、为应用选择一个AI弹性计算集群、指定应用的优先级、选择亲和调度策略、选择该应用中容器实例的规格和数量,并且支持对实例进行多个容器配置,可以对容器进行镜像选择、资源分配、自定义服务的启动命令,通过高级配置为容器挂载文件存储/缓存加速实例/配置项/密钥、设置环境变量等。
  • 查看信息:通过应用列表可查看到应用的基本信息,点击应用名称进入到详情页可以查看更具体的信息、应用日志、监控、容器配置信息和镜像快照。
  • 修改配置:通过应用的详情页和容器配置页面可以对创建好的应用进行配置修改,可通过DNAT规则配置为Internet访问容器服务开通端口。
  • 登录容器:通过应用详情页面对容器实例列表中的实例可以直接进行Web Terminal登录到指定容器。
  • 容器镜像快照:通过快照功能,可以实现数据恢复、开发测试环境搭建,或者制作自定义镜像以进行业务的批量部署。

用户指南

创建应用

首先通过控制台进入到云容器实例产品,进入到的是一个列表页面,左侧的筛选框可以选择不同的工作空间,点击右上角【创建应用】按钮,即可开启创建的流程。

Alt text 按照创建应用页面的展示顺序,需要自定义应用名称、选择AI弹性计算集群、为应用指定优先级、选择亲和调度策略、选择容器实例规格和容器实例数量、对容器进行配置、选择网络流量均衡方式、填写应用端口。

Alt text

  • 应用名称支持用户自定义输入符合字符要求的名称,要求2-128个字符,以大小写字母或中文开头,可以包含数字、点号(.)、 下划线(_)、半角冒号(:)或连字符(-),自定义的名称可以重名;
  • 选择AI弹性计算集群是从创建好的集群中选择一个,控制台会显示创建好的集群的资源规格,包括VPC、剩余可用的vCPU、卡数和内存,您可以根据需求选择一个合适的集群。专有集群还支持Spot资源,利用集群空闲资源实现更灵活资源供给。在集群资源紧张时,基于Spot资源运行的工作负载可能被驱逐以满足集群高优工作负载需求;

Alt text

  • 优先级包括普通、高优和最高三种,当用户选择Spot资源时,不再支持选择优先级。根据您的角色会有相应可设置的优先级,如果您是工作空间所有者,则拥有最高的优先级上限,如果您是工作空间用户或者容器应用用户,则拥有高优的优先级上限,具体的角色授予可进入到【AI弹性计算集群】-【工作空间管理】-【关联成员】处添加成员绑定角色;
  • 亲和调度策略目前仅针对专有集群开放,包括不启用、多副本亲和、副本间反亲和三种,默认不启用。选择不启用,系统会综合集群内所有工作负载情况统一调度;选择多副本亲和,系统会尝试将应用的多个副本调度到相同节点;选择副本间反亲和,系统会尝试将应用的多个副本尽量调度至不同节点;
  • 指定预留配额 该配置仅针对公共集群生效,默认不使用预留配额。您可以自行使用之前在AEC2中创建的预留配额,以保证CCI实例的成功创建。
  • 容器实例数量相当于应用中pod的副本数量,您可根据需要选择容器实例的数量;
  • 容器实例规格相当于应用中pod的规格,您可以根据需要选择容器实例的规格,GPU实例当前支持不同的卡粒度;
  • Container配置是可以为容器实例中设置多个不同的container,通过【新增容器】按钮即可增加container,当前支持最多添加5个,每个container可以设置其名称和镜像、分配卡/vCPU/内存的资源、并且可为容器填写对应的启动命令,通过高级配置为容器进行挂载AI文件存储、设置环境变量、挂载配置项和密钥;

Alt text

  • 容器名称支持用户自定义输入复合字符要求的名称,要求1-63个字符,以小写英文字母或数字开头和结尾,可以包含中划线(-);
  • 镜像种类包括官方镜像和私有镜像,官方镜像的镜像名称中会包含Ubuntu、pytorch以及cuda等版本信息,私有镜像您可以通过容器镜像服务CCR产品上传您的镜像并选择使用,镜像名称和镜像Tag根据需要下拉选择,卡数、vCPU、内存需要您输入为每个容器分配的对应资源量,要确保各容器分配的资源总量不得超过所选择的容器实例规格;
  • 启动命令是您根据需要为容器自定义命令,应用持续在线服务需要有常驻进程,否则进程执行完出后会重建容器实例。如果构建镜像时没有设置启动命令或想变更镜像中的启动命令,可以在此处设置;
  • 高级配置提供了为您的容器挂载存储卷、挂载缓存加速实例、添加环境变量、挂载配置项和密钥、健康检查的灵活能力,您可以按需进行配置。其中健康检查支持如下两种探针,详细配置方式您可参考配置存活、就绪探针
    • 存活探针 决定何时重启容器,如果一个容器的存活探针失败次数达到您设置的失败阈值,系统将自动重启该容器
    • 就绪探针 决定何时容器准备好开始接受流量,如果就绪探针返回的状态为失败,系统会把对应实例从后端服务中摘除,即该实例不会被分发流量。您可在实例列表处查看该实例或该容器状态是否Ready。

Alt text

其中,挂载AI文件存储支持最多挂载10个存储卷,可指定一级目录,默认为“/”。如果没有可用的存储卷,可以跳转到AI文件存储产品创建存储卷;

挂载路径需要遵循以下限制条件:
1. 目前仅支持最多挂载10个存储卷;
2. 挂载存储卷的容器路径不能为以下路径:/usr /boot /cdrom /dev /etc /media /opt /proc /Quarantine /run /snap /srv /swapfile /sys /var;
3. 不同的存储卷不能挂载到同一个路径上,或存在父子关系的路径上;
4. 缓存加速实例挂载路径和AI文件存储卷挂载路径不能为同一路径。

环境变量同样支持最多自定义10组key-value键值对,key的名称不可重复,字段不能为: HOSTNAME, SHELL, HISTSIZE, PERL5LIB, USER,对 PATH, PWD, LANG, HOME, LDLIBRARY_PATH, PYTHONPATH, devmachine_id, DEV_USER, DEV_GROUPS, ROOTABLE, HOSTNAME, NAMESPACE, PUBLIC_KEYS, SSHD_PASSWORD, VSCODE_PORT, VSCODE_PASSWORD, JUPYTERLAB_PORT, COMMAND, RESOURCE_TYPE 以及任何以 AILAB, custom, frp 开头的环境变量;
配置项、密钥支持最多200个,挂载路径不能为同一个,配置项的创建支持手动直接填写key-value和文件上传两种方式,密钥的创建支持创建key-value的方式;
上传文件的方式创建配置项的文件格式要求:

  • json格式,文件名称为configmap.json,配置示例如下:
{
"kind": "ConfigMap",
"apiVersion": "v1",
"metadata": {
"name": "nginxconf", (必填)
},
"data": { (必填)
"nginx.conf": "server {\n listen 80;\n server_name localhost;\n\n location / {\n root html;\n index index.html index.htm;\n }\n}"
}
}
  • yaml格式,文件名称为configmap.yaml,配置示例如下:
kind: ConfigMap
apiVersion: v1
metadata:
name: nginxconf (必填)
data: (必填)
nginx.conf: |-
server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}
}

  • initContainer配置同Container配置,可用来运行主容器之前的一些前期准备工作;
  • 网络流量均衡默认开启。开启后,向应用访问地址发送的请求将以轮询的负载均衡方式发送至各个副本。关闭时系统不做默认负载均衡,可通过访问地址解析到所有可用副本的IP地址,以便自主搭建负载均衡系统;
  • 应用端口需要您填写范围在1-65535之间的端口,其中8002-8010端口系统服务占用,不能用于应用的服务发布,当前支持最多10个端口的设置;
  • 公网访问若您需要应用访问公网,可在此处配置EIP DNAT相关内容。请注意:仅应用开启网络流量均衡及配置应用端口前提下,才支持进行公网访问。
  • 优雅下线 优雅下线是指当您或系统发出停止Pod的指令时(如删除Pod、Deployment滚动更新等),CCI并不会立即强制终止该Pod中的容器,而是会将容器保留一段时间,让容器有机会进行一些清理工作,比如保存状态、关闭连接、完成正在进行的任务等,之后再退出。为保障服务的平滑过渡,请合理配置优雅下线宽限期,默认为30秒。允许配置范围0~3600秒,0相当于立即强制终止,请结合自身场景谨慎设置。
  • 最大无效实例数 最大无效实例数是指每次滚动升级允许的最大不可用实例数,该值如果等于实例数有断服风险,请合理设置。
  • 最大超出实例数 最大超出实例数是指每次滚动升级允许的超出期望实例数的最大实例数。

查看信息

  • 应用列表

您可以通过【应用列表】查看应用的相关信息,通过左侧下拉框选择某个工作空间,右侧列表会展示出在该工作空间下的应用,会展示出应用名称/ID、关联集群、应用中容器实例个数、容器实例规格、地区/可用区、应用的提交者、创建时间、应用状态、优先级,并能通过操作列的删除按钮对应用进行启动、停止、复制或删除,同时通过点击【事件】可以查看应用的事件详情。
列表上方有筛选框可以根据应用的范围、应用的运行状态、应用关联的集群快速筛选出目标应用,并能根据应用名称进行模糊搜索,以达到从列表中快速定位到目标应用。

Alt text

点击应用名称可以进入到应用详情页面,包括应用的基本信息、应用日志、监控、容器配置、镜像快照五个部分。

  1. 基本信息栏会展示应用的具体信息。
  2. 应用日志支持选择容器实例和容器,运行中的容器可看到实时日志,其它状态的应用可跳转到离线日志查看。
  3. 监控支持实时或自定义时间段查看监控数据,现支持CPU、GPU、内存、显存的使用率的指标监控。
  4. 容器配置展示实例中配置的各个容器的详情信息。
  5. 镜像快照展示用户构建的所有容器镜像的快照记录。

Alt text

  • 配置项和密钥列表
    通过配置项或密钥列表可以查看到您创建的配置项和密钥信息,列表上方支持按照名称进行快速搜索,点击名称可以看到详情,并能进行更新和删除操作。

修改配置

  • 您可以通过应用详情页面对应用名称、优先级、亲和调度策略、应用端口、副本数、伸缩策略进行修改,并能配置DNAT规则。

Alt text

  • 您可以通过实例配置页面对亲和调度策略、优雅下线、容器配置等内容的修改;并且可以定义分批发布策略及每批发布实例数,批次间发布可以暂停供您做业务验证。

Alt text

  • 针对发布策略,若您选择了首批暂停或每批暂停策略策略,执行发布后,您可以去该应用详情页 - 基本信息Tab - 实例列表处查看发布进度,当前批次验证结束后您可以进行下一批次的实例发布或进行回滚。

Alt text

登录容器

您可以通过Web Terminal的方式登录到容器,通过应用详情页面的容器实例列表,点击操作栏的Web Terminal,再选择容器即可直接登录到对应的容器。

Alt text

容器镜像快照

  • 创建镜像快照:进入应用详情页面后,容器实例列表会展示出多个副本的容器实例,点击操作栏处的保存即可创建快照。仅支持运行中的主容器实例进行快照保存。

Alt text

  • 查看镜像快照:用户进入应用详情页面,通过点击镜像快照查看快照信息,包括快照名称、快照显示名称、创建时间、命名空间、快照版本、快照状态和快照地址。

Alt text

弹性伸缩

应用开启弹性伸缩后,可设置基于监控指标(如CPU、内存利用率、自定义监控项等)配置的告警策略以及预先设置时间,到监控负载触发阈值或预设时间后伸缩策略自动进行实例数量的增减,以应对业务负载波动情况。对于弹性伸缩提供以下概念助您快速使用:

  • 负载伸缩策略:支持使组内实例维持在指定监控指标项值的伸缩策略,无需预设实例伸缩数量,系统将自动计算维持目标值所需的实例数,并对应用内实例做扩缩容操作。
  • 定时伸缩策略:可以在指定的时间点或预定的时间间隔内修改应用副本数的伸缩策略。
  • 最小实例数/最大实例数:开启弹性伸缩条件下,应用内实例数量允许变化的上限及下限。
  • 负载伸缩稳定窗口:当用于扩缩的指标不断波动时,稳定窗口用于限制副本计数的波动;自动扩缩算法使用此窗口来推断先前的期望状态并避免对应用副本数进行不必要的更改。在进行实际的扩缩容前,扩缩器会查看稳定窗口中保存的之前计算的期望实例数,并使用窗口期内、保持扩缩方向不变,且最接近当前副本数的值。如果找不到符合条件的副本数,则本次不进行扩缩。

如下为相关弹性伸缩操作:

开启/关闭弹性伸缩

应用开启弹性伸缩后,可设置负载伸缩策略以及定时伸缩策略;若您在某一阶段不希望应用内副本数变化,可关闭弹性伸缩。

Alt text

修改弹性伸缩配置

应用开启弹性伸缩后,若您需要调整弹性伸缩基本信息,则可通过修改操作实现,可对应用内最小实例数、最大实例数、负载伸缩稳定窗口进行修改。

Alt text

添加负载伸缩策略

应用开启弹性伸缩后,支持在应用内创建伸缩策略,负载伸缩默认以应用为监听维度,负载伸缩策略相关字段及含义如下:

  • 监控类型:支持选择系统监控和自定义监控

  • 监控指标:支持选择应用提供的系统监控指标以及自定义监控指标。若您选用自定义监控指标,请确保上报的指标中包含workspace_name、app_name label,其中workspace_name对应的value值为“工作空间名称”、app_name对应的value值为“应用名称”。label格式如:workspace_name = myws、app_name = myappA

  • 目标值:设置后,弹性伸缩将使应用内实例对应监控指标维持在该值附近。

Alt text

添加定时伸缩策略

应用开启弹性伸缩后,支持在应用内创建伸缩策略,定时伸缩策略相关字段及含义如下:

  • 策略名称:由小写字母、数字和连字符(-)组成,1~63个字符,需以小写字母开头,小写字母或数字结尾
  • 执行周期:支持选择仅执行一次、每天执行、每周执行
  • 执行时间:定时伸缩策略单次或周期执行的时间点
  • 调整至:当定时伸缩策略执行时,您期望将应用内副本数调整至的数量

Alt text

修改伸缩策略

应用内开启弹性伸缩时,您可修改某伸缩策略的相关信息,点击操作栏处的修改按钮,在弹出弹窗中修改伸缩规则,除策略类型和策略名称不支持修改外,其他内容均支持修改。

查看弹性伸缩基本信息及伸缩策略

您可在应用详情页查看弹性伸缩基本信息及伸缩策略相关信息。

Alt text

最佳实践

部署推理服务

下面通过容器实例部署推理服务为例,给出最佳实践说明,以下示例使用了官方text generation inference镜像,LLaMA-2-7B-chat模型,并且有以下提前:
(1)通过AI文件存储AFS产品创建了存储卷用来保存模型文件(该示例中存储卷命名为llm),container和initcontainer容器之间可以通过挂载相同的存储卷访问模型文件;

(2)通过弹性公网IP EIP产品创建了EIP用来绑定DNAT规则将部署的推理服务对外暴露。

  • 按照用户指南创建应用的步骤进行创建,其中配置了一个initcontainer,作为在主容器启动之前进行模型准备等前期工作,您实际使用中不需要可不进行配置。并且通过高级配置进行了AI文件存储卷llm的挂载,,挂载路径为/data。
    initcontainer容器的启动命令如下,用来完成LLaMA-2-7B-chat模型的下载,/data路径是挂载的文件存储,模型文件持久保存在文件存储系统中,应用容器container启动时,挂载相同的llm即可访问模型文件:
mkdir -p /data/models
wget https://cci-demo.aoss.cn-sh-01.sensecoreapi-oss.cn/LLaMA/llama-2-7b-chat-hf.tar
tar xvf llama-2-7b-chat-hf.tar -C /data/models/

应用容器container同样通过高级配置挂载名称为llm的存储卷,其启动命令如下,通过tgi的方式启动服务,将推理服务的端口绑定到填写的应用端口上,这里以9091为例:

text-generation-launcher --model-id /data/models/llama-2-7b-chat-hf --dtype float16  --sharded false --port 9091

  • 如果该推理服务需要通过外网访问,则需要通过详情页的DNAT规则进行绑定将服务对外暴露。点击详情页的【DNAT规则】,跳转到弹性公网EIP进行规则配置,添加目的地址转换规则的目的端口需要和创建应用的应用端口一致。
  • 以下为创建好的应用详情页面

  • 通过外网访问推理请求,使用的推理请求命令如下,需要将DNAT_IP和DNAT_PORT换成真实的值(该示例中IP和端口替换为47.113.76.76:6789),-d中是请求的服务内容,其中inputs中的data字段,是推理请求内容:
cur DNAT_IP:DNAT_PORT/generate \
-X POST \
-d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":200}}' \
-H 'Content-Type: application/json'

下图是推理服务的请求及返回结果:

构建开发环境

准备环境和资源

  1. 运行环境要求

推荐使用CCI官方镜像(lepton-cci/ubuntu20.04-py3.8-pytorch2.3.1-cuda12.6.1-cudnn-devel:v1.0.0-20241009)

  1. 资源准备

应用创建

创建云容器实例,详细步骤参考用户指南-创建应用

  1. 镜像选择和启动命令

推荐镜像中已预装Code-Server、Jupyter Lab、Tensorboard相关依赖。镜像地址为<registry.cn-sh-01.sensecore.cn/lepton-cci/ubuntu20.04-py3.8-pytorch2.3.1-cuda12.6.1-cudnn-devel:v1.0.0-20241009>

为在容器启动的同时开启SSH/Web VSCode/Jupyter Lab/Tensorboard 等服务,可设定容器启动命令如下:

service ssh start && \
nohup code-server --bind-addr 0.0.0.0:8080 > /dev/null 2>&1 & \
nohup jupyter-lab --ip=0.0.0.0 --port=8888 --allow-root & \ \
nohup tensorboard --logdir=/logs --host 0.0.0.0 --port=6006 > /dev/null 2>&1 &
sleep inf

# 若需开启不配密码或token的Jupyter Lab服务,可替换相关启动命令为:
nohup jupyter-lab --ip=0.0.0.0 --port=8888 --allow-root --NotebookApp.token='' &

其中 --logdir 参数用于指定日志文件的存储目录,请根据实际情况进行替换。

  1. 服务发布配置
  • 通过容器启动命令指定服务发布端口并后台自动开启服务。
  • 在实例创建的配置项【应用端口】中,添加相应的服务监听端口号用于服务发布,如上文启动命令中Code-Server、JupyterLab、Tensorboard服务对应的8080、8888、6006等。

  1. 挂载文件存储

可按需选择是否进行文件存储的挂载,操作步骤如下:首先通过AI文件存储AFS产品创建存储卷,在CCI实例配置界面点击【编辑实例信息>添加存储卷】,选定存储卷后,支持自定义存储目录和挂载路径,通过存储卷加载本地模型及数据,或存放训练结果文件。

公网发布

通过弹性公网IP EIP产品创建EIP,绑定DNAT规则,用于远程SSH连接及访问webIDE服务。具体步骤为在EIP产品中选择【创建EIP>添加规则】,然后选定容器实例及相应端口创建DNAT规则,实现公网发布与访问。

开发环境使用

完整配置可参考下图所示。

  1. SSH远程连接
  • 本地公钥⽣成

    • 打开您本地的终端(如Terminal),输⼊ ssh-keygen 命令
    • 确认存放公钥的地址。您可使⽤默认路径,直接 enter 键确认
    • 输⼊密码和确认密码。如果不想设置密码,直接按两次 enter 键。⽣成后可在公钥生成的地址对应的 id_***.pub 文件下获取到您的公钥信息。

  • 公钥配置

    • 在启动容器实例后,将公钥埋⼊ /root/.ssh 中名为 authorized_keys 的⽂件中,执行下述命令后即可进行SSH远程连接。
    chmod 600 ~/.ssh/authorized_keys

  • 本地 Terminal SSH 访问

    • 通过【DNAT规则】字段所展示的22端口对应访问地址获取 SSH 连接地址
    • 打开本地 Terminal,输⼊SSH地址并连接,实现更⾼效、安全的免密码访问

  • VSCode SSH 访问

    • 在 VSCode 的官⽅插件中,搜索并安装 Remote-SSH 插件

    • 在 VScode 客户端左下角点击启动 Remote - SSH,选择 conncet to host 可选择已添加的 host 或添加新的 host 进行连接。

注:host相关信息可在应用详情页面获取;SSH 配置文件地址为事先准备时公钥文件生成的地址,如 C:\Users\XXX.ssh\config

  1. WebIDE访问

根据本实践所配置容器参数,在浏览器中输入【DNAT规则】字段给定的IP地址即可访问对应的服务,如下所示

  • 在浏览器中打开Tensorboard服务

  • 在浏览器中打开需密码/token验证的JupyterLab服务

  • 在浏览器中打开Web VSCode服务

常见问题

1.如果使用私有镜像,如何在私有镜像中添加使用bash指令?
前提您的私有镜像需要先安装版本对应的包管理工具:apt-get/yum或者apk才能使用以下修改dockerfile方式。

  • Ubuntu或 Debian 基础镜像:
RUN apt-get update && apt-get install -y bash

  • CentOS 基础镜像:
RUN yum install -y bash


  • Alpine 基础镜像:
RUN apk add --no-cache bash

以Alpine镜像为例,完整示例如下

# 使用 Alpine Linux 作为基础镜像
FROM alpine:latest

# 在镜像中安装 Bash
RUN apk update && apk add --no-cache bash

# 可以在这里添加其他依赖和命令

# 设置容器的入口点为 Bash
CMD ["/bin/bash"]