我通过命令使用Dockerfile在映像上安装了tomcat7:
MAINTAINER Abc Xyz <[email protected]>
RUN apt-get -qq update
RUN apt-get -y install openjdk-7-jre
RUN apt-get -y install tomcat7
EXPOSE 8080
当我构建映像并尝试运行以下命令时:
sudo docker run -d -P abcxyz/tomcat service tomcat7 start
我没有看到它映射到的端口上的tomcat页面(例如49153)...当我在图像中作为bash运行时,我尝试:
service tomcat7 start
然后它也无法启动tomcat7服务器。我认为问题是图像无法启动tomcat7服务器。虽然我不确定,但我听说docker图像无法运行任何新手服务。
任何人都知道如何解决它?谢谢。
它不起作用,因为只要您指定的程序正在运行,容器就会工作。 service tomcat7 start
命令立即结束。
只需添加:
--privileged=true
参数与docker run命令。 Tomcat需要扩展权限才能运行。
更多信息:https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration
将命令更改为
<path/to/tomcat>/bin/cataline.sh run
这将使tomcat在前台运行
你应该像这样运行它:
docker run -dP abcxyz/tomcat catalina.sh run
只要命令执行,这将使容器运行。您运行它的方式是将服务作为后台进程。
使用docker run with -d switch在分离模式下运行。所以它将在后台运行。例如:docker run -d abcd /path/catalina.sh run