Tomcat没有在docker镜像上运行

时间:2014-06-25 03:54:12

标签: tomcat7 docker ubuntu-10.04

我使用Dockerfile通过以下命令在图像上安装了tomcat7:

MAINTAINER Abc Xyz <abc@xyz.com>
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图像无法运行任何新手服务,但我不确定。

任何人都知道如何解决它? 感谢。

5 个答案:

答案 0 :(得分:6)

只需添加:

--privileged=true
使用docker run命令的

参数。 Tomcat需要扩展权限才能运行。

有更多信息:https://docs.docker.com/reference/run/#runtime-privilege-linux-capabilities-and-lxc-configuration

答案 1 :(得分:5)

将命令更改为

<path/to/tomcat>/bin/cataline.sh run

这将使tomcat在forground中运行

答案 2 :(得分:3)

它不起作用,因为只要您指定的程序正在运行,容器就会工作。 service tomcat7 start命令立即完成。

答案 3 :(得分:1)

你应该像这样运行它:

var _db
var noteItems = {}

_db.readTransaction( function(tx) {
    var rs = tx.executeSql("SELECT * FROM note WHERE markerId=? ORDER BY markerid DESC", [markerId] );
    var item

    for (var i=0; i< rs.rows.length; i++) {
        item = rs.rows.item(i)
        noteItems[item.noteId] = item;
        console.log(noteItems[item.noteId].x)
    }
)}

只要命令正在执行,这将使容器运行。您运行它的方式是将服务作为后台进程。

答案 4 :(得分:0)

使用docker run with -d switch在分离模式下运行。所以它将在后台运行。 例如: docker run -d abcd /path/catalina.sh run