docker中的TCP,UDP和HTTP服务器在启动容器后立即停止?

我将在Java Docker容器中托pipe由Java开发的TCP,UDP和HTTP服务器。

我在dockerfile所有的东西都是服务器应用程序的副本命令和用来运行服务器的bash文件。

但是, 服务器在运行容器几秒钟后就停止了?

我使用以下命令来运行容器:

docker run -d -p 8000:8000 -p 2701:2701 --name app_test_con_1 app_test_img_1

这是dockerfile的bootstrap命令: CMD ["/workspace/one_click.sh"]

有没有办法让服务器永远运行? 既然这样做,如果我在主机操作系统中运行相同的.sh文件, 当然只要terminal没有closures。

在前台进程完成后,Docker容器将立即退出。 这意味着如果您的one_click.sh脚本执行了类似service apache2 start ,然后退出,则容器将立即退出。 我们的大部分Java图像都有一些以下的变体来防止这种情况:

 CMD service apache2 start && /bin/bash 

使用Docker的首选方法是每个容器1个进程,如果你使用它来运行带有服务的完整虚拟机,那么你需要解决它。