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

时间:2015-09-25 10:41:42

标签: linux bash docker

我将在Java docker容器中托管由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文件运行它,它会这样做;当然只要终端没有关闭。

1 个答案:

答案 0 :(得分:1)

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

CMD service apache2 start && /bin/bash

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