runc技术疑问:如何启动已停止的容器且无需删除?
解决runc已停止容器的重启问题
runc的容器生命周期设计中,处于stopped状态的容器无法直接通过runc start重启——因为容器进程已完全退出,相关运行时状态被标记为终止,无法复用该状态直接启动。但你可以通过复用原容器的文件系统和配置,重新创建并启动容器,以此保留原容器的数据与配置,无需彻底删除容器资源。
具体操作步骤如下:
查看已停止容器的bundle路径
执行命令获取容器配置与rootfs所在的bundle目录位置:runc state nginx在输出结果里找到
bundle字段,记录对应的路径(例如/var/lib/containers/nginx/bundle)。删除已停止容器的状态记录
此操作仅删除runc中该容器的状态信息,不会删除容器的rootfs(数据)和配置:runc delete nginx重新创建容器实例
使用之前记录的bundle路径,创建处于created状态的新容器实例:runc create nginx --bundle /path/to/your/bundle请将
/path/to/your/bundle替换为实际的bundle路径。启动新创建的容器
现在可以正常启动容器:runc start nginx
完成以上步骤后,你将得到一个保留了原容器数据的运行中容器,无需重新构建或删除原容器的文件系统资源。
内容的提问来源于stack exchange,提问作者geeknet
相关产品推荐
相关产品推荐

