1

Webサーバーアプリケーションを完全にドッキングするまで成功しました。ここで、マラソン フレームワークを介して mesos スレーブに直接デプロイすることで、さらに調査したいと考えています。コマンド ラインまたは marathon Web UI を使用して、2 つの異なる方法で docker コンテナーを marathon にデプロイできます。どちらもうまくいきましたが、docker イメージをデプロイしようとすると、マラソンが頻繁にジョブを再起動し、mesos UI ページで同じコンテナーに対して多くの完了したジョブが表示されるという課題があります。1 分あたり 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

今、この問題を解決する方法がわかりません。ガイダンスをいただければ幸いです。ありがとう

4

1 に答える 1

0

Marathon は、長時間実行されるタスクを実行するためのものです。したがって、あなたの場合、特定のポートをリッスンし続けない Docker コンテナーを開始すると、つまり正常に終了しても失敗しても、Marathon は再び開始します。

たとえば、最も単純なイメージを使用して Docker コンテナーを開始しましたhello-world。これにより、数秒で Mesos UI に 10 以上のプロセスが生成されました! これは予期されていたことです。Docker コンテナー内のコードは正常に実行され、正常に終了していました。終了後、Marathon はアプリの別のインスタンスがすぐに開始されるようにしました。

一方、ポート 80 でリッスンし続ける nginx コンテナーを起動すると、実行時間の長いタスクになり、既存のコンテナーが終了した場合 (成功または失敗) にのみ新しいタスク (Docker コンテナー) が起動されます。

おそらくCMD、Dockerfile のセクションで作業する必要があります。問題のコンテナーは、正常に起動されたときに実行され続けますか? つまり、 Marathon なしで - プレーンを使用するだけdocker runですか? はいの場合は、デタッチ モードで実行し続けるかどうかを確認します - docker run -d。存在する場合CMDは、作業する必要がある部分です。

于 2015-07-29T07:18:40.537 に答える