docker - 在容器内调试时保持 docker 容器运行
问题描述
在我的 Dockerfile 中,我有CMD java -jar a.jar
. 然后我启动了容器。然后我想 ssh 进入容器并杀死 a.jar 进程并运行java -jar b.jar
. 所以我跑了docker exec -it <CONTAINER_ID> /bin/bash
,然后终止了进程,但容器立即停止了。有没有办法在我杀死主进程后保持容器运行,以便我可以运行另一个进程?
解决方案
你的容器正在死亡,因为启动容器的进程,在你杀死它后进程 id 1 死亡。
如果要启动容器并终止 java 进程,可以在 docker run 中覆盖 CMD 并附加一个即使您终止 java 进程也会运行的命令。
例如:docker run ... mycontainer java -jar a.jar & sleep infinity
推荐阅读
- ios - 我想提醒在 HomeVC 中显示消息错误
- reactjs - react native 为什么我的 textinput 文本在中间?
- javascript - 使用按钮激活/停用 cytoscape-edgehandles 插件
- r - 计算所有行的最大值,无需手动输入每列的名称
- node.js - 如何使用 vue 套接字连接节点服务器
- c# - 是否必须在 C# 中使用带有 using 关键字的 sqltransaction
- bash - 如何在使用 bash 维护标题和文件扩展名的同时将大型 CSV 文件拆分为小部分
- javascript - 安装在本地显示 nodemon 应用程序崩溃的项目 - 在开始之前等待文件更改......即使在安装了所有软件包之后
- python - 如何组合我在下面定义的 3 个数组?
- postgresql - Docker COPY 命令不复制