频繁的重新启动 – docker集装箱在马拉松/ mesos

我已经成功,直到完全dockerizing我的networking服务器应用程序。 现在我想通过马拉松框架将它们直接部署到一个mesos slave来探索更多。 我可以通过两种不同的方法(无论是通过命令行还是通过马拉松网页用户界面)将泊坞窗容器部署到马拉松。 两者都为我工作,但挑战是当我试图部署我的docker图像,马拉松经常重新启动一个工作,并在mesos UI页面,我可以看到许多完成了同一个容器的工作。 每分钟接近10个任务。 我不相信。

我的docker文件如下所示:

FROM ubuntu:latest #---------- file Author / Maintainer MAINTAINER "abc" #---------- update the repository sources list RUN apt-get update && apt-get install -y \ apache2 \ curl \ openssl \ php5 \ php5-mcrypt \ unzip #--------- installing composer RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer RUN a2enmod rewrite #--------- modifying the 000default file COPY ./ /var/www/airavata-php-gateway WORKDIR /etc/apache2/sites-available/ RUN sed -i 's/<\/VirtualHost>/<Directory "\/var\/www"> \n AllowOverride All \n <\/Directory> \n <\/VirtualHost>/g' 000-default.conf RUN sed -i 's/DocumentRoot \/var\/www\/html/DocumentRoot \/var\/www/g' 000-default.conf WORKDIR /etc/php5/mods-available/ RUN sed -i 's/extension=mcrypt.so/extension=\/usr\/lib\/php5\/20121212\/mcrypt.so/g' mcrypt.ini WORKDIR /var/www/airavata-php-gateway/ RUN php5enmod mcrypt #--------- making storage folder writable RUN chmod -R 777 /var/www/airavata-php-gateway/app/storage #-------- starting command CMD ["sh", "-c", "sh pga-setup.sh ; service apache2 restart ; /bin/bash"] #--------- exposing apache to default port EXPOSE 80 

现在我不知道如何解决这个问题,任何指导将不胜感激。 谢谢

马拉松是为了运行长期运行的任务。 所以在你的情况下,如果你启动了一个不停留在特定端口上的Docker容器,意味着它成功或者失败了,Marathon会重新启动它。

例如,我使用最简单的图像hello-world启动了一个Docker容器。 在几秒钟内在Mesos UI中生成了10多个进程! 这是预料之中的。 Docker容器内部的代码执行成功并正常退出。 而且,自从它退出后,马拉松确保应用程序的另一个实例立即启动。

另一方面,当我启动一个持续监听端口80的nginx容器时,它将成为一个长时间运行的任务,只有当现有的容器退出(成功或失败)时,才会启动新的任务(Docker容器)。

您可能需要在Dockerfile的CMD部分工作。 正常启动时,容器是否继续运行? 也就是说,没有马拉松 – 只是使用普通docker run ? 如果是,请检查它是否继续以分离模式docker run -ddocker run -d 。 如果退出,则CMD是您需要处理的部分。