我一直在使用谷歌的容器优化操作系统在 GCP 计算引擎虚拟机上部署容器。当主机 VM 在 GCP 中停止时,我一直在努力理解已部署容器的关闭行为。
当我的容器收到 SIGTERM 或 SIGINT 信号时,它们会执行一些清理行为并将一些文件写入已安装的卷中。我已经用docker stop
and对此进行了广泛的测试docker kill -s SIGINT
。但是,当我在 GCP 中停止主机时,似乎没有发生这种行为。
我不完全确定如何调试这个过程。我尝试连接到 VM 的串行控制台,但它似乎没有任何与容器关闭逻辑有关的信息。
任何指导将不胜感激!作为参考,这是我正在部署的图像。
完整复制步骤:
使用“将容器映像部署到此虚拟机”创建一个新的“计算引擎”虚拟机。我一直在使用带有 20GB 引导盘的 e2 介质。
使用“ lloesche/valheim-server ”图像。
设置以下环境变量:
SERVER_NAME: Test
WORLD_NAME: Test
SERVER_PASS: Password # must be at least 5 characters
添加类型为“Directory”的目录挂载,其中“/config”作为挂载路径,“/home/YOUR_GCP_USERNAME/valheim-server-config”作为“读/写”模式下的主机路径。
容器启动后,您应该在主机 (lloesche/valheim-server) 上运行映像。您还应该在~/valheim-server-config/worlds/
called处创建一个文件Test.fw1
。
现在,停止这个容器 ( docker stop
) 应该会导致对该文件的写入。您可以通过停止容器然后观察该文件的修改日期来验证这一点。
但是,当主机实例停止时,似乎不会发生此过程。如果您重新启动主机以使容器再次运行,然后向主机发出“停止”,则在容器被杀死之前不会保存该文件。