无法在CoreOS的容器内运行Tomcat 7

我试图在数字海洋CoreOS机器上安装tomcat 7,但面临一些问题,不知道如何解决它们。 我正在按照Digital Ocean提供的以下教程来设置Apache。

https://www.digitalocean.com/community/tutorials/how-to-create-and-run-a-service-on-a-coreos-cluster

我创build了docker容器并使用以下命令运行它。

docker run -i -t ubuntu:14.04 /bin/bash 

我成功地能够通过使用下面的命令来安装tomcat 7。 (我按照这个教程来设置docker容器中的tomcat 7: https : //www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-ubuntu-14-04-via- apt-get )

 sudo apt-get update sudo apt-get install tomcat7 

然后我可以创build名为tomcat @ .service的服务单元文件

 [Unit] Description=Tomcat 7 web server service After=etcd.service After=docker.service Requires=tomcat-discovery@%i.service [Service] TimeoutStartSec=0 KillMode=none EnvironmentFile=/etc/environment ExecStartPre=-/usr/bin/docker kill tomcat%i ExecStartPre=-/usr/bin/docker rm tomcat%i ExecStartPre=/usr/bin/docker pull attacomsian/tomcat ExecStart=/usr/bin/docker run –name tomcat%i -p ${COREOS_PUBLIC_IPV4}:%i:8080 attacomsian/tomcat `service tomcat7 start` -D FOREGROUND ExecStop=/usr/bin/docker stop tomcat%i [X-Fleet] X-Conflicts=tomcat@*.service 

然后,我创build了tomcat-discovery @ .service来使用Etcd注册服务状态,如下所示

 [Unit] Description=Announce Tomcat@%i service BindsTo=tomcat@%i.service [Service] EnvironmentFile=/etc/environment ExecStart=/bin/sh -c “while true; do etcdctl set /announce/services/tomcat%i ${COREOS_PUBLIC_IPV4}:%i –ttl 60; sleep 45; done” ExecStop=/usr/bin/etcdctl rm /announce/services/tomcat%i [X-Fleet] X-ConditionMachineOf=tomcat@%i.service 

我提交并加载文件到舰队如下

 fleetctl submit tomcat@.service tomcat-discovery@.service fleetctl load tomcat@8080.service fleetctl load tomcat-discovery@8080.service 

到目前为止一切正常。 我没有看到任何错误。 但是当我试图运行下面的服务

 fleetctl start tomcat@8080.service 

但是并没有开始。 我可以看到它看起来像死了一样。

我是CoreOS新手,仍在学习。 我在Digital Oceanpipe理服务器,我对此非常了解。 我search了这个问题,但没有find任何帮助。 我个人认为下线实际上是造成麻烦。

 ExecStart=/usr/bin/docker run –name tomcat%i -p ${COREOS_PUBLIC_IPV4}:%i:8080 attacomsian/tomcat `service tomcat7 start` -D FOREGROUND 

我真的很感激任何帮助,以得到这一点。

非常感谢

Attacomsian

我当时build议你看看其他人做了什么,然后发现你在Docker Hubregistry上发布了类似的问题。

你看看tutum / tomcat映像使用的Docker文件吗?

它运行一个名为“run.sh”的脚本,在前台运行tomcat。

需要理解的是,Docker不是虚拟机,因此没有任何服务在运行。 您必须明确运行docker进程或设置像runit或supervisord这样的进程pipe理器。

希望这可以帮助。