停止天气预报通知”;Docker容器意外停止”;
我有一个包含一个Node.js脚本的容器,它是通过停止天气预报通知”;Docker容器意外停止”;,docker,synology,Docker,Synology,我有一个包含一个Node.js脚本的容器,它是通过CMD npm start启动的。脚本运行、执行一些工作并退出。节点进程退出,因为没有挂起的工作。npm启动成功退出。然后容器停止 我通过docker start xxxx从cronjob在Synology NAS上运行此容器。当它完成时,我从他们的警报系统中得到一个警报Docker container xxxx意外停止docker容器ls-a显示其状态为在5小时前退出(0)。如果我监视docker事件我会看到事件die与exitCode=0 似
CMD npm start
启动的。脚本运行、执行一些工作并退出。节点
进程退出,因为没有挂起的工作。npm启动
成功退出。然后容器停止
我通过docker start xxxx
从cronjob在Synology NAS上运行此容器。当它完成时,我从他们的警报系统中得到一个警报Docker container xxxx意外停止docker容器ls-a
显示其状态为在5小时前退出(0)
。如果我监视docker事件
我会看到事件die
与exitCode=0
似乎我需要通过生成
stop
事件而不是die
事件来向系统发出退出预期的信号。这是我可以在图像中或docker start命令行中执行的操作吗?我不熟悉Synology,因此我不确定是哪个组件引发了您提到的“警报”,但我想这只是一个警告而不是错误,因为:
- 从POSIX的角度来看,退出状态为0是非常好的李>
- “die”docker事件似乎也很常见,例如运行
然后docker事件
会产生相同的事件(而“kill”事件则更可疑)docker运行--rm-it debian bash-c“echo Hello”
- 您运行的映像/容器是否真的存在?(关于容器处理的数据)因为如果是这种情况,您可能更喜欢使用
或docker run--rm-i image\u name…
而不是执行docker run--rm-d-i image\u name…
。(在这种情况下,多亏了docker start container\u name
,当容器停止时,将自动触发容器移除。)--rm
- 即使您提到的设置对于cron作业来说听起来相当合理(即,容器提前自动停止的事实),您可能会对它感兴趣,它提供了关于如何捕获由
等发出的信号的更多细节docker stop
- 容器退出时会出现
docker事件(当容器退出时,您可以通过监视die
看到这种情况)。这是容器中的主进程自行退出的任何情况。退出代码不重要docker事件
- Synology Docker GUI将容器视为“已启用”。此信息存储在
中:/var/packages/Docker/etc/container\u name.config
- 当满足以下两个条件时,Synology Docker程序包将生成通知Docker容器xxxx意外停止:
{
“启用”:正确,
“出口”:假,
“id”:“dbee87466fb70ea26cd9845fd79af16d793dc64d9453e4eba43430594ab4fa9b”,
“图像”:“busybox”,
“is_ddsm”:false,
“is_package”:false,
“姓名”:“默念”,
“快捷方式”:{
“启用快捷方式”:false,
“启用_状态_页面”:false,
“启用网页”:false,
“网页url”:”
}
}
如何使用Synology的Docker GUI启用/禁用容器
如果从GUI启动容器,容器将自动启用。所有这些都将导致容器变为“已启用”,并在退出时开始通知:
- 将容器视图中的“切换开关”滑动到“打开”
- 在容器上使用Action start
- 打开容器详细信息面板并单击“开始”
docker run-d…
创建的容器不会启动,并且在退出时不会发出警告。这可能就是为什么像docker run-it--rm busybox
和其他临时容器不会引起通知的原因
如果在容器运行时停止容器,则容器可以被禁用。似乎无法禁用当前已停止的容器。因此,要禁用容器,您必须启动它,然后在它自行退出之前停止它:
- 一旦允许,将拨动开关滑到on(打开)位置,然后滑到off(关闭)位置
- 使用Action start,然后在允许的情况下立即停止(这很难,因为如果容器非常短,会有额外的点击)
- 打开控制器详细信息面板,单击开始,然后在“停止”未灰显时,单击“停止”
通过查看
/var/packages/Docker/etc/container_name.config
来检查您的工作,这个问题可以在Synology上使用临时容器解决,因为它们一开始不是“启用”的,因此不会引起通知。长寿命容器的最终结果是,有人最终从GUI启动了它们一次,这导致GUI开始发出通知。@JenJackson好的,这是有道理的!谢谢你的跟进。
{
"enabled" : true,
"exporting" : false,
"id" : "dbee87466fb70ea26cd9845fd79af16d793dc64d9453e4eba43430594ab4fa9b",
"image" : "busybox",
"is_ddsm" : false,
"is_package" : false,
"name" : "musing_cori",
"shortcut" : {
"enable_shortcut" : false,
"enable_status_page" : false,
"enable_web_page" : false,
"web_page_url" : ""
}
}