我们知道 Podman 是无 docker 的,它没有作为 docker 的守护进程。
在 docker 中,我可以通过在 docker run 中添加一个卷来运行 docker 命令 -v /var/run/docker.sock:/var/run/docker.sock
,这样容器就可以使用 bash 脚本从内部重新启动。
是否有任何解决方案可以在 Podman 中做同样的事情,podman restart container
在容器内运行?
如果出现问题,我不会让程序访问 Docker 套接字(以及对主机的无限根级别访问),只是为了重新启动。
如果您确定存在问题并且您的程序无法继续运行,它可以退出(调用类似exit()
或sys.exit()
或抛出未处理的异常)。当容器主进程退出时,会触发容器重启策略,可以导致容器重启。 podman run
有一个几乎相同的--restart
选项。
podman run --restart=on-failure ... my-image
您也可能会考虑如果不涉及容器,您将如何解决此问题。如果你需要重新加载你的配置,或者重新执行你自己的二进制文件,或者有一个面向开发人员的非生产实时重新加载环境,那么这些相同的方法在容器中也同样适用,并且不需要 Docker插座。