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

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

一些镜像会在它打镜像时,加入一些默认的启动命令,可以通过docker inspect \<image id\>来查看Entrypoint。如下图,docker run启动时,会默认执行 "python3 -m vllm.entrypoints.openai.api_server"
在这里插入图片描述
如果不想执行,有几个办法:
(1)在 docker run 命令中直接覆盖默认的启动脚本

# 覆盖 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>可以看到这个容器是没有启动命令的,可以基于此容器重新打个镜像
在这里插入图片描述

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

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

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

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

docker save -o original_image.tar your_original_image:tag

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

mkdir extracted_image
tar -xf original_image.tar -C extracted_image
cd extracted_image

找到并修改配置文件:
每个镜像层的元数据存储在 manifest.json 和各层的 json 文件(如 xxxxxxxx.json)。
编辑主配置文件(通常是第一个层的 json 文件),找到 config.Entrypoint 字段并设为 null 或删除:

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

重新打包并导入镜像:

# 重新打包为 tar
tar -cf ../new_image.tar *
cd ..
# 导入新镜像
docker load -i new_image.tar
# 检查新镜像名称和标签
docker images
http://www.xdnf.cn/news/244837.html

相关文章:

  • Docker启动nacos
  • zephyr架构下扫描和解析Beacon数据
  • Learning vtkjs之TriangleFilter
  • 开发板型号 ESP32-DevKitC-32模块型号 ESP32-WROOM-32 和主控芯片 ESP32-D0WDQ6-V3
  • 电子秤检测管理系统开发实战:从数据采集到可视化大屏
  • Python Cookbook-6.14 实现状态设计模式
  • Windows下Python3脚本传到Linux下./example.py执行失败
  • 3D版同步帧游戏
  • 案例:自动化获取Web页面小说(没钱修什么仙)——selenium
  • mem0 安装与测试:一个强大的对话记忆管理工具
  • 机器人手臂控制器:EMC电磁兼容解决(一)
  • 分寝室(C++完成)
  • 阿里云自动备份网站,阿里云自动备份网站的方法
  • kotlin中 热流 vs 冷流 的本质区别
  • 编程语言全景解析与编程技巧深度探索
  • 基于MyBatis的银行转账系统开发实战:从环境搭建到动态代理实现
  • 人工智能——DBSCAN 聚类算法
  • Webug4.0靶场通关笔记07- 第9关反射XSS和第10关存储XSS
  • 【Quest开发】极简版!透视环境下抠出身体并能遮挡身体上的服装
  • 免费实用的图像处理工具箱​
  • Java 泛型参数问题:‘ResponseData.this‘ cannot be referenced from a static contex
  • 原型模式(Prototype Pattern)详解
  • K8S - ReplicaSet 与 Deployment 深度解析与实战
  • Curl 全面使用指南
  • 【含文档+PPT+源码】基于大数据的交通流量预测系统
  • WebStorm用户界面
  • 【排序算法】八大经典排序算法详解
  • Wireshark抓取SMTP协议报文
  • 算法查找目录
  • Webug4.0靶场通关笔记08- 第11关万能密码登录(SQL注入漏洞)