如何修改已运行Docker容器配置 解决config.v2.json修改被覆盖问题
Docker容器启动参数/环境变量修改方案
直接修改/var/lib/docker/container/<container_name>/config.v2.json的操作不生效,是因为Docker daemon会在容器启停、状态变更时,用内存中存储的元数据覆盖该文件,强行修改还可能导致容器元数据损坏,不建议使用该方式。以下是正确的修改方案:
方法1:重新创建容器(最推荐)
Docker设计理念为容器实例无状态,配置变更优先选择重新生成容器:
- 先查询原容器的启动参数、环境变量配置,确认需要修改的项:
docker inspect <容器ID/容器名称> | grep -E 'Cmd|Env' - 停止并删除原容器(如果容器有持久化数据,确保数据已挂载到宿主机volume或本地目录,删除容器不会删除挂载的数据):
docker stop <容器ID/容器名称> docker rm <容器ID/容器名称> - 重新执行
docker run命令,传入修改后的新参数、环境变量即可。
方法2:提交容器为自定义镜像后重新运行
如果原容器内部有未挂载到外部的自定义修改,不想丢失,可以先将当前容器提交为本地镜像,再基于新镜像启动带新参数的容器:
- 提交当前容器为本地镜像:
docker commit <原容器ID/容器名称> 自定义镜像名:版本标签 - 基于新生成的镜像执行
docker run,传入修改后的参数即可。
方法3:使用docker update命令(仅支持部分配置修改)
如果仅需要修改资源限制、重启策略等配置,可以直接用docker update命令无需重建容器,注意该命令不支持修改环境变量、启动命令类参数:
示例:修改容器重启策略为 always
docker update --restart=always <容器ID/容器名称>
内容的提问来源于stack exchange,提问作者prashant s
相关产品推荐
相关产品推荐

