84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
シェル スクリプトを呼び出す docker コンテナ内で cron ジョブを実行しようとしています。
昨日オンラインとスタック オーバーフローで検索しましたが、実際に機能する解決策が見つかりません。
これどうやってするの?
承認された回答 運用環境では危険な可能性があります。
CMD cron && tail -f /var/log/cron.log を使用すると、cron プロセスは基本的にフォークしてバックグラウンドで cron を実行し、メイン プロセスが終了します。 tailf をフォアグラウンドで実行させます。バックグラウンドの cron プロセスは気付かないうちに停止または失敗する可能性があり、コンテナーは引き続きサイレントに実行され、オーケストレーション ツールはコンテナーを再起動しません。
を使用すると、cron プロセスは基本的にフォークしてバックグラウンドで
を実行し、メイン プロセスが終了します。
をフォアグラウンドで実行させます。バックグラウンドの cron プロセスは気付かないうちに停止または失敗する可能性があり、コンテナーは引き続きサイレントに実行され、オーケストレーション ツールはコンテナーを再起動しません。
リーリー
CMD ["cron", "-f"]
ただし、 の場合は、非 root ユーザー としてタスク を実行します。
crontab をイメージにコピーすると、そのイメージから起動されたコンテナーがジョブを実行できます。
crontab
重要: docker-cron 問題 3 と同様: cron ファイルには CRLF の代わりに LF を使用します。
cron
SeeDocker を使用した cron ジョブの実行" /github.com/julienboulay" rel="noreferrer">Julien Boulay の Ekito/docker -cron :
2>&1 が何なのか知りたい場合は、Ayman Hourieh が説明します。 リーリー
2>&1
ただし: cron が停止しても、container は引き続き実行されます。 (
が停止しても、
の コメント および apt-get のインストールのノイズを軽減する方法を参照してください。 : apt-get -y install -qq --force-yes cron も機能します) Nathan Lloyd が
Nathan Lloyd
にコメントしたように: あるいは、hugoShaka
: のように、ジョブ自体がログ ファイルではなく stdout/stderr に直接リダイレクトされるようにします。 リーリー Dockerfile の最後の行を に置き換えます。 リーリー
の場合は、非 root ユーザー
を実行します。 「cron -f、cron "フロントエンド" について」も参照してください。「
cron -f は機能しません 」 ビルドして実行します: リーリー リーリー
は機能しません
エリック
: 「docker CMD」の最後にある「
出力 > 表示されない 」を参照してください。 ”末尾的 詳細については、
による「Docker での Cron の実行」 (2021 年 4 月) を参照してください。コメントは次のとおりですJason の画像を表示 AnalogJ/docker-cron に基づく: Dockerfile は、ディストリビューションに応じて、cronie/crond をインストールします。 エントリ ポイントの初期化/etc/environment次に呼び出し リーリー
Jason の画像を表示 AnalogJ/docker-cron に基づく:
AnalogJ/docker-cron
Dockerfile は、ディストリビューションに応じて、cronie/crond をインストールします。
cronie
crond
エントリ ポイントの初期化/etc/environment次に呼び出し
/etc/environment
承認された回答 運用環境では危険な可能性があります。
CMD cron && tail -f /var/log/cron.log
基本的なシェル リダイレクトを使用して、次のことを実行できます:を使用すると、cron プロセスは基本的にフォークしてバックグラウンドで
cronを実行し、メイン プロセスが終了します。
tailfをフォアグラウンドで実行させます。バックグラウンドの cron プロセスは気付かないうちに停止または失敗する可能性があり、コンテナーは引き続きサイレントに実行され、オーケストレーション ツールはコンテナーを再起動しません。
リーリー
CMD は次のようになります:CMD ["cron", "-f"]
ただし、 の場合は、非 root ユーザー としてタスク を実行します。
crontab
をイメージにコピーすると、そのイメージから起動されたコンテナーがジョブを実行できます。重要: docker-cron 問題 3 と同様:
cron
ファイルには CRLF の代わりに LF を使用します。SeeDocker を使用した cron ジョブの実行" /github.com/julienboulay" rel="noreferrer">Julien Boulay の Ekito/docker -cron :
リーリー2>&1
が何なのか知りたい場合は、Ayman Hourieh が説明します。 リーリーただし: cron
Gaafarが停止しても、
container は引き続き実行されます。 (の コメント および apt-get のインストールのノイズを軽減する方法を参照してください。 :
apt-get -y install -qq --force-yes cron も機能します)
Nathan Lloyd
がにコメントしたように: あるいは、hugoShaka
answer
: のように、ジョブ自体がログ ファイルではなく stdout/stderr に直接リダイレクトされるようにします。 リーリー Dockerfile の最後の行を に置き換えます。 リーリー
ただし、の場合は、非 root ユーザー
としてタスクを実行します。 「cron -f、cron "フロントエンド" について」も参照してください。「
docker ubuntucron -f
ビルドして実行します: リーリー リーリー
は機能しません
」エリック
がコメントにを追加しました
: 「docker CMD」の最後にある「
tail -f出力 > 表示されない 」を参照してください。
”末尾的
詳細については、
Jason Kulatungaによる「Docker での Cron の実行」 (2021 年 4 月) を参照してください。コメントは次のとおりです-
-
Jason の画像を表示
AnalogJ/docker-cron
に基づく:Dockerfile は、ディストリビューションに応じて、
cronie
/crond
をインストールします。エントリ ポイントの初期化
リーリー/etc/environment
次に呼び出し