You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
镜像
基于 Docker 制作自定义镜像
复制全文
下载 pdf
基于 Docker 制作自定义镜像
容器服务支持使用基于 veLinux 的自定义镜像为节点安装操作系统,本文为您介绍如何使用docker run方式打包自定义镜像。​
背景信息​
本方式已经对自定义镜像打包过程进行产品化封装,使用docker run命令即可自动进行自定义镜像的打包,命令执行过程将自动完成以下步骤:​
  1. 系统根据所选规格临时新建一台 veLinux 操作系统的 ECS、一个 EIP、一个 VPC 及其子网,其中 ECS 和 EIP 将以按量计费方式进行收费。​
  1. 打包自定义镜像,并检查自定义镜像的可用性。​
  1. 将已经打包并检查无误的镜像,导入 ECS 的镜像中心。​
  1. 删除临时创建的所有资源,并以按量计费方式结算 ECS 和 EIP 的费用。​
使用限制​
在 1.30 及以上 Kubernetes 版本集群中使用 veLinux 2.0 或 Ubuntu 22.x 及以上版本自定义镜像/共享镜像时,默认使用 cgroupv2。如需使用 cgroupv1,请 提交工单 获取技术支持。​
前提条件​
  • 已经在本地或云服务器中安装 Docker,且确保可以连接到互联网。详细操作参见:官方文档。​
  • 已开通快照服务,用于存储自定义镜像数据,操作详情可查看 快照。​
  • (可选)若使用标准版镜像仓库,确保已经准备待打包的镜像,并获取镜像地址、镜像仓库用户名和镜像仓库密码。​
  • (可选)若使用标准版镜像仓库,确保制作镜像的 ECS 实例与镜像仓库网络互通,可使用公网连接或指定 VPC。​
  • 若使用公有网络,要求镜像仓库开启公网访问,操作方法参见:开启公网访问。另外,公有网络将以按量计费方式进行收费。​
  • 若指定 VPC,要求同时在镜像仓库的访问控制中添加此 VPC,操作方法参见:连通本账号 VPC。​
  • (可选)若使用子用户打包自定义镜像,确保已经具备基础设施 ECS、EIP、VPC 相关的 IAM 权限,包含以下 Action:​
  • ​
    {​
    "Statement": [​
    {​
    "Effect": "Allow",​
    "Action": [​
    "ecs:RunInstances",​
    "ecs:StopInstance",​
    "ecs:DeleteInstance",​
    "ecs:DescribeInstances",​
    "ecs:CreateImage",​
    "ecs:PreheatImage",​
    "ecs:DescribeImages",​
    "ecs:DescribeTasks",​
    "vpc:CreateVpc",​
    "vpc:DeleteVpc",​
    "vpc:DescribeVpcs",​
    "vpc:CreateSubnet",​
    "vpc:DeleteSubnet",​
    "vpc:DescribeSubnets",​
    "vpc:DescribeSecurityGroups",​
    "vpc:AllocateEipAddress",​
    "vpc:AssociateEipAddress",​
    "vpc:DescribeEipAddresses",​
    "vpc:DisassociateEipAddress",​
    "vpc:ReleaseEipAddress"​
    ],​
    "Resource": [​
    "*"​
    ]​
    }​
    ]​
    }​
    ​
使用限制​
  • 免责声明:自定义镜像属于非标准环境,火山引擎不提供官方支持以及持续维护,自定义镜像相关详细声明参见:免责声明。​
  • 基于 Docker 制作自定义镜像的方式,目前仅支持使用容器服务基础镜像 veLinux 制作。​
  • 自定义镜像打包过程会临时创建一台 ECS 和一个 EIP,待所有流程结束后自动删除并以按量计费方式结算费用,请确保账号余额充足,否则可能导致镜像打包失败。​
操作说明​
满足以上前提条件后,即可在已经安装 Docker 的本地或云服务器中,使用docker run方式进行自定义镜像的打包。其中,所有参数均通过环境变量(ENV)来配置。​
使用示例​
  • 示例一:仅包含必选参数的简单示例。​
  • ​
    docker run --rm \​
    -e VOLC_AK="<AK>" \ ​
    -e VOLC_SK="<SK>" \ ​
    -e TAILOR_SPEC="ecs.xxx.large" \ ​
    vke-cn-beijing.cr.volces.com/vke/private-image-packer:v1.0.9​
    ​
说明​
示例命令末尾的\是 Shell 命令中的换行符,若客户端无法识别,需删除此符号,将命令整理成一行。​
  • 示例二:包含所有参数的详细示例。​
  • ​
    docker run --rm \​
    -e VOLC_AK="<AK>" \ ​
    -e VOLC_SK="<SK>" \ ​
    -e REGION="cn-shanghai" \​
    -e ZONE="cn-shanghai-a" \​
    -e TAILOR_IMAGE_NAME="my-image-name" \​
    -e TAILOR_SPEC="ecs.xxx.large" \ ​
    -e TAILOR_DISK_SIZE="60" \​
    -e TAILOR_COMPAT="false" \​
    -e IMAGES="cr-helm2-cn-beijing.cr.volces.com/****/busyxxx:latest,cr-helm2-cn-beijing.cr.volces.com/****/3gixxx:latest" \​
    -e REGISTRY_USERNAME="paas2b_prod@2100****" \​
    -e REGISTRY_PASSWORD="password123" \​
    -e TAILOR_PASSWORD="password"\​
    -e TAILOR_VPC="vpc-13fawddpwxxxxxx6nu4g2y8bt"\​
    -e TAILOR_SUBNET="subnet-mj92ij8xxxxxxsmt1arvwrtw"\​
    -e TAILOR_KERNEL="5.4"\​
    vke-cn-beijing.cr.volces.com/vke/private-image-packer:v1.0.9​
    ​
参数说明​
​
ENV 名称​
是否必选​
描述​
示例​
VOLC_AK​
是​
账号 AK,前往 API 访问密钥 获取。​
AKLTN2M1NTRjODNkYmI2NGEzNWFiYTk3ZTZhY********​
VOLC_SK​
是​
账号 SK,前往 API 访问密钥 获取。​
WkRVek5EWmtaalU0Wm1RMU5ETTJOamcyWlRoaU5EaGlObVJq****​
REGION​
否​
地域,若留空将默认配置cn-beijing。容器服务支持的地域和可用区列表参见:地域和可用区。​
cn-beijing​
ZONE​
否​
可用区,若留空将默认配置{REGION}-a。​
cn-beijing-a​
TAILOR_SPEC​
是​
指定需要构建镜像的机型,控制台中可选的机型均可使用,详细清单参见:ECS 实例规格。​
说明​
ECS 实例规格并非通用,请根据实际场景选择,建议制作镜像的 ECS 与目标使用的 ECS 保持一致。例如:若期望打包用于 GPU 场景的自定义镜像,则需要使用 GPU 实例规格,否则会导致驱动缺失,不可使用。​
ecs.xxx.large​
TAILOR_DISK_SIZE​
否​
制作自定义镜像时使用的系统盘大小,若留空将默认配置40,即 40 GiB。​
100​
TAILOR_IMAGE_NAME​
否​
自定义镜像的名称,若留空将自动生成velinux开头的名称。​
velinux-example​
TAILOR_COMPAT​
否​
是否使用 veLinux CentOS 兼容版。​
  • false:默认值,不使用 veLinux CentOS 兼容版。​
  • true:使用 veLinux CentOS 兼容版。​
false​
REGISTRY_USERNAME​
否​
待拉取镜像所属私有镜像仓库使用的用户名,格式通常为火山账号@账号 ID,根据实际情况填写即可。​
说明​
若留空将默认以公开身份拉取镜像,此参数需要与 REGISTRY_PASSWORD共同使用。​
user@2100******​
REGISTRY_PASSWORD​
否​
待拉取镜像所属私有镜像仓库用户名对应的密码。​
说明​
若留空将默认以公开身份拉取镜像,此参数需要与 REGISTRY_USERNAME共同使用。​
password@123​
IMAGES​
否​
待拉取镜像的列表,若留空将不拉取用户的容器镜像。​
说明​
支持拉取多个镜像,以英文逗号(,)分隔。​
cr-helm2-cn-beijing.cr.volces.com/****/busy*****:latest,cr-helm2-cn-beijing.cr.volces.com/*****/3gixxx:latest​
TAILOR_PASSWORD​
否​
创建 ECS 实例时所使用的密码。​
Password​
TAILOR_VPC​
否​
在指定 VPC 内创建 ECS 实例,必须与 TAILOR_SUBNET 一起指定。​
说明​
若指定 VPC 及其子网,请确保子网的安全组在入方向规则中放开 22 端口。​
vpc-13fawddpwxxxxxx6nu4g2y8bt​
TAILOR_SUBNET​
否​
在指定子网内创建 ECS 实例,必须与 TAILOR_VPC 一起指定。​
subnet-mj92ij8xxxxxxsmt1arvwrtw​
TAILOR_KERNEL​
否​
指定镜像所使用的内核版本,可选值:5.4、5.10,默认为 5.4。​
5.4​
​
private-image-packer 更新记录​
​
版本号​
版本状态​
更新时间​
更新记录​
更新影响​
v1.0.9​
维护中​
2024.8​
修复指定内核版本为 5.10 时出现镜像无法找到的问题。​
无​
v1.0.8​
维护中​
2024.6​
修复使用自定义镜像创建多个 ECS 时,machine-id 相同的问题。​
无​
v1.0.7​
停止维护​
2023.10​
优化镜像预热的逻辑,同时支持 ECS 的镜像预热 和 EBS 的快照预热两种方式,快照预热时默认保留时间为 365 天。​
无​
v1.0.6​
停止维护​
2023.9​
  • 【不兼容】环境变量 PREHEATING_DISABLED 重命名为 。PREHEAT_DISABLED,并将默认值从 false 修改为 true​
  • 在 ECS 中拉取容器镜像的方式,从 crictl 修改为 ctr。​
不兼容变更,需将 PREHEATING_DISABLED 调整为 PREHEAT_DISABLED。​
v1.0.5​
停止维护​
2023.8​
  • 新增环境变量 TAILOR_KERNEL,指定内核版本。​
  • 新增环境变量 TAILOR_PASSWORD,指定 ECS 的密码。​
  • 新增环境变量 TAILOR_VPC 和 TAILOR_SUBNET,指定 ECS 的 VPC、子网。​
  • 新增环境变量 PREHEATING_DISABLED,只制作自定义镜像但不对镜像做预热。​
无​
v1.0.4​
停止维护​
2023.6​
新增 TAILOR_COMPAT 环境变量,支持 veLinux CentOS 兼容版。​
无​
v1.0.3​
停止维护​
2023.4​
【不兼容】修复环境变量 Zone 的格式,从 a 修改为 {REGION}-a,例如:cn-beijing-a。详细地域和可用区支持情况参见:地域和可用区。​
不兼容变更,需调整 Zone 环境变量。​
v1.0.2​
停止维护​
2023.4​
修复广州地域执行报错的问题。​
无​
v1.0.1​
停止维护​
2023.4​
预热镜像时,新增可用区校验。​
无​
v1.0.0​
停止维护​
2023.3​
private-image-packer 首次正式发布。​
无​
​
后续操作​
打包过程故障处理​
若docker run命令执行过程中报错中断自定义镜像打包,需要根据报错提示进行处理,然后重新执行命令。可能存在的错误包括:​
  • docker run 命令错误:命令参数不符合语法定义、缺少可用的参数值等。​
  • 自定义镜像检查不通过:操作系统与内核版本、systemd 等基础组件版本、cloud-init 状态、DNS 配置、NTP 状态、atop/proxima/unscd 等组件版本、文件系统挂载状态、网卡名匹配、系统启动参数等检查不通过。​
查看自定义镜像​
docker run命令执行成功后,打包好的自定义镜像将自动上传到 ECS 的镜像中心。​
​​​
使用自定义镜像​
创建集群、创建节点池或添加已有节点时,即可选择使用已经打包并上传到镜像中心的自定义镜像。详细操作参见:创建集群、添加已有节点、创建节点池。​
​​​
​
​
​
​
最近更新时间:2026.07.03 19:05:33
这个页面对您有帮助吗?
有用
有用
无用
无用