gpt4 book ai didi

docker - 如何在不杀死整个容器的情况下杀死 docker 容器默认命令?

转载 作者:行者123 更新时间:2023-12-02 18:44:30 24 4
gpt4 key购买 nike

我正在运行一个包含节点服务器的 docker 容器。我想附加到容器,终止正在运行的服务器,然后重新启动它(用于开发)。但是,当我杀死节点服务器时,它会杀死整个容器(大概是因为我正在杀死容器启动的进程)。

这可能吗? This answer有帮助,但它没有解释如何在不杀死容器的情况下杀死容器的默认进程(如果可能)。

如果我尝试做的事情不可行,那么解决此问题的最佳方法是什么?添加 command: bash -c "while true; do echo 'Hit CTRL+C'; sleep 1; done" 到我的 docker-compose 中的每个图像,如链接答案的评论中所建议的那样,似乎不是理想的解决方案,因为它迫使我在容器启动后附加到容器并手动运行命令。

最佳答案

这是 Docker 设计的。每个容器都应该是服务的无状态实例。如果该服务中断,容器将被销毁。如果请求/启动该服务,则会创建该服务。如果您至少使用 k8s、swarm、mesos、cattle 等编排平台。

存在代表 PID 1 而不是服务本身的应用程序。但这违背了微服务和容器的设计理念。下面是一个初始化系统的例子,它可以作为 PID 1 运行,并允许您随意终止和生成容器中的进程:https://github.com/Yelp/dumb-init

为什么要重启节点服务器?要应用配置文件或其他内容的更改?如果是这样,您正在寻找错误方向的解决方案。您应该改为定义一个持久卷,以便在容器重新生成时服务将重新读取所述配置文件。

https://docs.docker.com/engine/admin/volumes/volumes/

关于docker - 如何在不杀死整个容器的情况下杀死 docker 容器默认命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45718967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com