停止Synology通知“ Docker容器意外停止”

问题描述 投票:1回答:2

我有一个容器,其中包含一个用CMD npm start启动的Node.js脚本。该脚本将运行,执行一些工作并退出。 node进程退出,因为没有任何工作挂起。 npm start成功退出。然后容器停止。

我通过docker start xxxx从cronjob在Synology NAS上运行此容器。完成后,我从其警报系统收到警报Docker容器xxxx意外停止docker container ls -a的状态显示为Exited (0) 5 hours ago。如果监视docker events,则会看到事件dieexitCode=0

似乎我需要通过产生stop事件而不是die事件来向系统发送信号,表明期望退出。这是我可以在图像中还是在docker start命令行上执行的操作?

docker synology
2个回答
1
投票

我不熟悉Synology,所以我不确定哪个组件正在引发您提到的“警报”,但是我想这只是一个警告,而不是错误,因为:

  • 从POSIX的角度来看,退出状态为0很好;
  • “死”泊坞窗事件似乎也很常见,例如运行docker events,然后docker run --rm -it debian bash -c "echo Hello"会产生相同的事件(而“ kill”事件则更可疑)。

所以也许您只是因为Synology假定容器应该运行很长时间才收到这样的警告?

无论如何,以下是与您的问题有关的几点评论:

  • 您真正运行的图像/容器是ephemeral吗? (关于容器处理的数据),因为在这种情况下,您可能更喜欢使用docker start container_namedocker run --rm -i image_name …而不是docker run --rm -d -i image_name …。 (在这种情况下,由于--rm,当容器停止时,容器的移除将自动触发。)
  • 即使您提到的设置对于cron作业听起来很合理(也就是说,您的容器会提前并自动停止的事实,您可能会对this other SO answer感兴趣,但它提供了有关如何捕获[[ C0]等

0
投票

当满足以下两个条件时,Synology Docker软件包将生成通知Docker容器xxxx意外停止

  • [容器通过docker stop docker事件退出(您可以通过在容器退出时监视die来看到此情况)。在任何情况下,容器中的主进程都会自行退出。 docker events没关系。
  • Synology Docker GUI将容器视为“已启用”。此信息存储在exitCode中:
/var/packages/Docker/etc/container_name.config

如何使用Synology的Docker GUI启用/禁用容器

如果<自动启用的] >>。所有这些都会导致容器“启用”并在退出时开始通知:

    将容器视图中的“切换开关”滑动到“打开”

  • 在容器上使用操作开始。
  • 打开容器详细信息面板并单击“开始”
  • 这可能是您的容器最终如何“启用”的,为什么它现在在退出时发出通知。用 { "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" : "" } } 创建的容器不会启动,并且最初不会在退出时发出警告。这可能就是为什么docker run -d ...和其他临时容器之类的东西不会引起通知的原因。
  • 如果您

    停止它们它们正在运行

    ,则可以[。似乎没有办法禁用当前停止的容器。因此,要禁用容器,您必须启动它,然后在它自己退出之前将其停止将拨动开关拨动后立即关闭。
      使用操作开始后立即停止,它会让您停下来(这很难,因为如果您的容器寿命很短,则需要额外的点击)。
    • 打开控制器详细信息面板,单击“开始”,然后在“停止”未灰显时,单击“停止”。
    • 通过查看docker run -it --rm busybox检查您的工作。
    © www.soinside.com 2019 - 2024. All rights reserved.