2

Docker イメージを使用して Origin 3.1 でアプリを作成しています。

イメージを作成するたびに、新しいポッドが作成されますが、何度も再起動し、最終的に「CrashLoopBackOff」というステータスになります。

ポッドのログを分析しましたが、エラーは発生しません。すべてのログ データは、正常に実行されているアプリの期待どおりです。したがって、原因を特定することはできません。

今日、以下のリンクに出くわしました。「ルートとしてコンテナー内でアプリケーションを実行することにはまだリスクがあります。OpenShift では、デフォルトでそれを行うことは許可されておらず、代わりに任意の割り当てられたユーザー ID として実行されます。」

openshift ポッドの CrashLoopBackOff ステータスとは何ですか?

ここで私のイメージは root ユーザーのみを使用していますが、これを機能させるにはどうすればよいですか? ログにはエラーは表示されませんが、ポッドは再起動し続けます。

誰でもこれで私を助けてくれませんか。

4

4 に答える 4

1

Red Hatの推奨事項は、GID 0 が所有するファイル グループを作成することです。コンテナー内のユーザーは常にルート グループに属します。chown はできませんが、書き込み先のファイルを選択的に公開できます。

2 番目のオプション: 指定ユーザーまたは root (0) ユーザーのいずれかを使用するイメージを OpenShift でビルドできるようにするために、プロジェクトのビルダー サービス アカウント (system:serviceaccount::builder) を特権セキュリティ コンテキスト制約 (SCC) に追加できます。 )。または、すべてのイメージを任意のユーザーとして実行できるようにすることもできます。

于 2016-03-02T14:16:21.453 に答える
0

最後にコンテンツを含むスクリプトを「run.sh」として作成することで、これを解決できます。

while :; do
sleep 300
done

そしてDockerfileで:

ADD run.sh /run.sh
RUN chmod +x /*.sh
CMD ["/run.sh"]

このように機能します。解決策を見つけるのに役立った理由を指摘してくれた皆さんに感謝します。しかし、この場合にのみ openshift でプロセスが終了する理由が 1 つあります。Tomcat サーバーを同じ方法で実行してみましたが、スクリプトでスリープしなくても問題なく動作します。

于 2016-03-29T10:59:37.573 に答える