无法在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文件吗?
- https://github.com/tutumcloud/tutum-docker-tomcat/blob/master/7.0/Dockerfile
- https://github.com/tutumcloud/tutum-docker-tomcat/blob/master/7.0/run.sh
它运行一个名为“run.sh”的脚本,在前台运行tomcat。
需要理解的是,Docker不是虚拟机,因此没有任何服务在运行。 您必须明确运行docker进程或设置像runit或supervisord这样的进程pipe理器。
希望这可以帮助。