使用sudo podman stop无法停止容器,状态卡在Stopping的问题求助
Podman容器使用sudo启动后无法正常停止/重启的问题解决
问题现象
通过sudo podman启动多个容器后,执行sudo podman stop/restart xxx(以pgadmin4容器为例)时会触发如下错误:
WARN[0010] StopSignal SIGTERM failed to stop container mypgadmin4 in 10 seconds, resorting to SIGKILL Error: given PID did not die within timeout
容器状态会卡在「Stopping」,仅能通过重启主机恢复。且该问题仅在sudo权限下出现,普通用户使用Podman无异常。
环境信息
Ubuntu 24.04 Kernel: 6.8.0-35-generic #35-Ubuntu SMP PREEMPT_DYNAMIC 远程登录方式:ssh Podman安装方式:Ubuntu官方apt源 Podman版本:4.9.3
可能原因
- cgroup配置差异:sudo启动的容器使用root级cgroup,普通用户使用用户级cgroup,Ubuntu 24.04的systemd cgroup v2配置在两种权限下存在差异,导致Podman无法正确传递终止信号、回收进程。
- 版本兼容性问题:Podman 4.9.3与Ubuntu 24.04的6.8.x内核存在适配问题,root模式下SIGKILL信号无法正常终止容器进程。
- SSH会话进程绑定:远程SSH会话中,sudo启动的容器进程可能与SSH进程组绑定,导致终止信号无法正确传递。
解决方法
方法1:调整Podman cgroup配置
编辑/etc/containers/containers.conf文件,修改以下配置项:
[engine] cgroup_manager = "systemd" events_logger = "journald"
保存后重启Podman服务:
sudo systemctl restart podman
之后重新用sudo启动容器,测试停止/重启操作。
方法2:手动强制终止容器(无需重启主机)
当容器卡在Stopping状态时,先找到容器对应的PID:
sudo podman inspect mypgadmin4 | grep -i pid
直接用kill命令强制终止该进程:
sudo kill -9 <容器PID>
执行后清理容器:
sudo podman rm mypgadmin4
之后即可重新启动容器。
方法3:升级Podman到最新稳定版
Ubuntu官方源的Podman版本可能滞后,添加官方源升级:
- 卸载当前Podman:
sudo apt remove --purge podman
- 添加Podman官方源:
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_24.04/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list curl -fsSL https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_24.04/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/devel_kubic_libcontainers_stable.gpg
- 更新并安装最新版本:
sudo apt update && sudo apt install podman
升级后测试sudo启动、停止容器的操作。
方法4:使用Podman rootless模式替代sudo
- 配置rootless模式(未配置过的话):
sudo loginctl enable-linger $USER systemctl --user start podman
- 直接用普通用户启动容器:
podman run -d --name mypgadmin4 dpage/pgadmin4
该模式下容器的启停操作不会出现上述问题。
内容的提问来源于stack exchange,提问作者B.Hong
相关产品推荐
相关产品推荐

