Docker: 如何重启容器内的进程?
Docker: how to restart process inside of container?
我想在 docker 容器上 运行 进行一组测试。 在测试过程中,我正在更改测试数据,我需要重新启动 JETTY。
最好的方法是什么?
我可以想象一些选择:
使用 SSH - 但对于 docker ssh 不是最佳选择。
Python docker 上的代理监听套接字 - 再公开一个端口,连接并重启码头。
也许有更好的主意?
谢谢
进入容器并重启。
手动方式:
docker exec -it <containeridorname> /bin/bash
或自动方式:
docker exec -it <containeridorname> /restartjettycommand.sh
听起来您尝试重新启动的进程是 docker 容器的主要进程(即您在 Dockerfile 中设置的进程,如果有的话,当您 运行 'ps -ef' 在容器内,您会看到进程的 PID 设置为 1)。如果是这种情况,则无法从容器内部重新启动它。您应该重新启动容器本身:
docker restart <container_id>
你需要使用 entrypoint shell script
您将需要构建 docker 文件,以便可以将文件复制到容器中。
你的 entrypoint.sh
或称之为 runjettytests.sh
伪代码如下所示:
#!/bin/sh
java -jar start.jar
$runTests
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
cp dataset2 data/
java -jar start.jar
$runTests2
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
exit(0)
很明显,您的用例可能会有所不同,但这是一个粗略的想法