如何通过docker container inspect的JSON输出重建已删容器?Postgres数据是否丢失?
问题解答
一、能否借助output.json重建容器?
可以,但需要手动解析JSON中的配置项,将其转换为docker run命令的参数:
- 从
Config.Image字段获取镜像名称(例如postgres:14) - 从
HostConfig.PortBindings提取端口映射规则,转换为-p 主机端口:容器端口格式 - 从
Env字段提取环境变量(如POSTGRES_USER、POSTGRES_PASSWORD),转换为-e KEY=VALUE格式 - 从
HostConfig.Mounts读取数据存储配置:如果是命名卷,添加-v 卷名:/var/lib/postgresql/data;如果是本地目录绑定挂载,添加-v 本地路径:/var/lib/postgresql/data - 其他配置如容器名、网络模式,对应添加
--name blablabla、--network 网络名称等参数
通过上述步骤,就能重建出与原容器配置基本一致的新容器。
二、是否会丢失所有数据?
数据是否丢失取决于原容器的存储方式:
- 若原容器使用命名卷或本地目录绑定挂载存储Postgres数据(默认路径为
/var/lib/postgresql/data),数据不会丢失。重建容器时挂载同一个卷或目录即可恢复数据 - 若原容器未做任何挂载,数据存储在容器自身的文件系统中,删除容器后数据会直接丢失,重建的容器将是全新的空环境
可以查看output.json的Mounts字段:如果存在Source项(本地路径或卷名),则数据可恢复;若Mounts为空,说明数据已丢失。
内容的提问来源于stack exchange,提问作者KingKongFrog
相关产品推荐
相关产品推荐

