当前位置: 首页 > 知识库问答 >
问题:

“docker compose down”是否在每个容器上调用“docker stop”?

景志
2023-03-14

我写了一个Python程序,它确保它的线程在收到Unix SIGTERM信号时被优雅地停止。我知道docker停止向容器内的主进程发送SIGTERM请求,并在宽限期后发送SIGKILL。docker-comment down的留档声明它“停止容器”,但没有明确说明如何停止。我假设它在每个容器上调用docker Stop

共有2个答案

仲孙经赋
2023-03-14

NPM和Dockerfile入口点:不要

我要在这里加上这个,所以它被记录在某个地方,其他人也会找到这个答案。

节点。JS Express MongoDB应用程序使用Docker撰写。非常基本,但它不会触发SIGINTSIGTERM事件。

https://github.com/neozenith/hello-mongo/tree/4c1c3d9a55b574ba5a1c5f45dbf708c65a70c434

解决方案

https://html" target="_blank">github.com/neozenith/hello-mongo/commit/c7e1b7497f204ffaa9387f99cb88188dadc1c094

之前:

# WAS THIS
CMD [ "npm", "start" ]

之后:

# FUN FACT: DO NOT RUN ["npm", "start"] as the ENTRYPOINT
# It does not forward the SIGTERM and SIGINT events to Node
ENTRYPOINT [ "node", "server.js" ]

ENTRYPOINT的exec表单通过SIGTERMSIGINT发送到PID 1。

https://docs.docker.com/engine/reference/builder/#exec-表单入口点示例

这里的关键是npm不会将其转发到节点

艾修筠
2023-03-14

根据user2915097给出的链接,似乎确实是这样。Project类的down方法调用它的Stop方法,该方法似乎在容器上迭代,并在每个容器上调用Stop

 类似资料:
  • 所以,这个AVX的东西-它就像一个小机器的每个核心?或者它就像整个CPU的一个引擎单元? 比如,我可以在每个核心上使用它吗?我在玩它,我觉得我可能会“过度使用”它,造成某种瓶颈。 你能给我解释一下吗?我全搞错了吗?

  • 我问这个问题是关于我的问题: spring单例范围 Spring单例在参考手册中根据每个豆子的容器进行定义。 每个容器意味着如果我们喜欢: Beans.xml: 然后将出来true.Means都指向同一个实例。 对于每个豆子的短语部分,每个容器每个豆子我有点困惑。我在每个豆子的跟随是正确的: 如果我们喜欢 Beans.xml: 那么将显示为false。意味着它们是两个不同的实例?

  • SIGCHLD的维基百科页面说: 当子进程退出、被中断或中断后恢复时,SIGCHLD信号被发送给子进程的父进程。 这是否意味着当父进程向子进程发送任何信号(如 )时,它将反过来接收来自子进程的 ? 或者我误解了中断(我假设它是指接收到的任何信号),在这种情况下,哪些信号是相关的?

  • 但我也想在集群外访问它。Description输出表示它使用端口30177上的NodePort公开。 但我无法在上访问它

  • 问题内容: 无论我们是否检查会话变量,会话超时都会在每个请求上重置吗?还是我们应该使用至少一个会话变量? Ajax请求是否导致重置会话超时?像,… 谢谢 编辑1) 会导致重置会话超时吗? 问题答案: 是的,它确实。是否实际使用都没关系。 但是,如果 仅 使用ajax调用,则可能会遇到一些问题。 (虽然我还没有遇到过它自己,在这里的解释)

  • 问题内容: 我需要在Java中将序数值转换为枚举值。这很简单: 该方法是隐式的,我无法找到它的源代码,因此是一个问题。 是否分配新数组?如果可以的话,第一次调用时是否应该缓存该数组?假设将非常频繁地调用转换。 问题答案: 是。 Java没有让我们创建不可修改数组的机制。因此,如果返回相同的可变数组,我们将冒有人可以为所有人更改其内容的风险。 因此,在将不可修改的数组引入Java之前,为了安全起见,