2016-06-24 14 views
0

私はドッカー内でatコマンドを実行しようとしています。このコマンドは、docker runコマンドを使用してコンテナを起動するときに実行されるスクリプトEntrypointスクリプトに存在します。ほとんどの場合、atコマンドは正常に実行されますが、5回のうち1回はコマンドが実行されません。これは何らかのバグですか、何か不足していますか?何かお勧めします。at docker container内のコマンド

答えて

3

atコマンドは、cronがキックオフするタスクをキューに入れます。 Cronは、OSに組み込まれているOSサービスです。コンテナは、OSサービスを開始しないプロセス分離ツールです(アンチパターンです)。つまり、デフォルトでコンテナ内でコマンドを実行するためのcronデーモンはありません。

何かをスケジューリングするには、コンテナのスタートアップの一部としてcronデーモンを実行するアンチパターンが必要です。あるいは、スケジューラをコンテナの外に置くか、独自のマイクロサービスコンテナに入れることが望ましいでしょう。

+0

私は、同じコンテナで実行されているいくつかのcronジョブがあり、完全に実行されているので、私はすでに言及しただけではなく、それは平均で5回に1回しか失敗しないので、問題がcronジョブの起動であった場合、それは一度も実行すべきではありません。 PS:遅く返事を申し訳ありません:) – tom

+0

私はまず、デフォルトでcrondがないので、あなたのcronジョブがどのように動作しているかを理解する必要があると思います。画像/コンテナに詳細が必要です。 – BMitch

+0

申し訳ありませんが、私はコンテナについてもう何も共有する権限がありません。私が言うことができるのは、私はcronの仕事を実行するために特別なことをしないということです。私は、それが自動的に実行され、crondを開始していないことを意味します。私はエントリ・スクリプトを通してcrontabにジョブを追加するだけです。 – tom