繁体   English   中英

Docker:如何重启容器内的进程?

[英]Docker: how to restart process inside of container?

我有一组测试,我想在docker容器上运行。 在测试过程中,我正在更改测试数据,我需要重新启动JETTY。

最好的方法是什么?

我可以想象一些选择:

  1. 使用SSH - 但对于docker ssh不是最好的选择。

  2. Docker上的Python代理监听套接字 - 再暴露一个端口,连接并重启jetty。

也许有更好的想法?

谢谢

听起来你正在尝试重启的进程是docker容器的主要进程(即你在Dockerfile中设置的进程,如果你有一个,当你在容器内运行'ps -ef'时你会看到PID为您的过程设置为1)。 如果是这种情况,则无法从容器内重新启动它。 您应该只重新启动容器本身:

docker restart <container_id>

输入容器并重新启动它。

手动方式:

docker exec -it <containeridorname> /bin/bash

或自动化方式:

docker exec -it <containeridorname> /restartjettycommand.sh

您需要使用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)

显然你的用例可能会有所不同,但这是一个粗略的想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM