【docker学习笔记】如何删除镜像启动默认命令

一些镜像会在它打镜像时,加入一些默认的启动命令,可以通过docker inspect \<image id\>来查看Entrypoint。如下图,docker run启动时,会默认执行 "python3 -m vllm.entrypoints.openai.api_server"

如果不想执行,有几个办法:

(1)在 docker run 命令中直接覆盖默认的启动脚本

python 复制代码
# 覆盖 CMD
docker run --rm -it your_image sh  # 用 `sh` 替换原有 CMD 命令
# 覆盖 ENTRYPOINT
docker run --rm -it --entrypoint "" your_image sh  # 清空 ENTRYPOINT 并运行新命令

--entrypoint "":清空原镜像的 ENTRYPOINT。

覆盖优先级:docker run 的命令行参数优先级高于 Dockerfile 中的 CMD 和 ENTRYPOINT。使用 docker run -it --entrypoint sh your_image 可快速进入容器 Shell,绕过启动脚本。

(2)基于上述镜像,重新打一个entrypoint为空的镜像

基于上述--entrypoint ""启动的容器,docker inspect <container_id>可以看到这个容器是没有启动命令的,可以基于此容器重新打个镜像

python 复制代码
# 提交容器为新的镜像,同时清除 ENTRYPOINT
docker commit \
    --change "ENTRYPOINT " \  # 显式清空 ENTRYPOINT
    temp_container your_new_image:no-entrypoint

--change "CMD=" 有需要也可以情况CMD
https://blog.csdn.net/pengjian444/article/details/105471450

在(1)中使用 --entrypoint "" 启动后,可以直接把那个启动的容器docker commit一下,就得到了一个entrypoint位空的镜像

(3)直接修改镜像底层数据
导出原始镜像为 tar 文件:

bash 复制代码
docker save -o original_image.tar your_original_image:tag

解压 tar 文件并修改元数据:

bash 复制代码
mkdir extracted_image
tar -xf original_image.tar -C extracted_image
cd extracted_image

找到并修改配置文件:

每个镜像层的元数据存储在 manifest.json 和各层的 json 文件(如 xxxxxxxx.json)。

编辑主配置文件(通常是第一个层的 json 文件),找到 config.Entrypoint 字段并设为 null 或删除:

bash 复制代码
json
{
  "config": {
    "Entrypoint": null,  // 清空 Entrypoint
    "Cmd": ["原有CMD命令"]  // 可选:保留或修改 CMD
  }
}

重新打包并导入镜像:

bash 复制代码
# 重新打包为 tar
tar -cf ../new_image.tar *
cd ..
# 导入新镜像
docker load -i new_image.tar
# 检查新镜像名称和标签
docker images
相关推荐
xuhaoyu_cpp_java4 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
小宋加油啊6 小时前
机械臂抓取物体 PVN3D算法调研学习
学习·算法·3d
Xzh04237 小时前
AI Agent 学习路线(Java 后端方向)
java·人工智能·学习
Cloud_Shy6187 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
正经教主7 小时前
【docker基础】第五课:Docker网络详解
运维·docker·容器
做cv的小昊7 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
星恒随风7 小时前
C++ 类和对象入门(五):初始化列表、explicit 和 static 成员详解
开发语言·c++·笔记·学习·状态模式
鹤鸣的日常8 小时前
前端运行时动态环境变量方案
前端·react.js·docker·前端框架·vue·gitlab
sensen_kiss9 小时前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.8 软件测试 (Software Testing)(上)
学习·软件工程
力学与人工智能9 小时前
PPT分享 | 洛桑联邦理工学院魏震:深度几何学习在工业设计优化中的应用
学习·优化·工业设计·深度几何学习·洛桑联邦理工学院