これは私のDockerfileです
FROM ubuntu:16.04
RUN apt-get update -y && apt-get install -y \
git \
python \
python-pip
Dockerイメージが作成されたら、ログインして、テスト用のcronジョブをセットアップしようとします。驚いたことに、cron
とcrontab
はありません。
# ls
app bin boot dev etc home lib lib64 media mnt opt proc
root run sbin srv sys tmp usr var
# crontab -l
/bin/sh: 6: crontab: not found
# crontab -l
/bin/sh: 7: crontab: not found
# crontab -l
/bin/sh: 10: crontab: not found
# cron
/bin/sh: 11: cron: not found
しかし、私はcron
がubuntuイメージに存在することを期待しています。間違った画像を選んだのですか、それともcron
を有効にするために必要なことはありますか?
Cronコマンドは、デフォルトではイメージubuntu:16.04にインストールされていません。
実行する必要がありますapt-get install cron
Dockerイメージは設計上最小限であり、完全なオペレーティングシステムではなく、コンテナーの作成に使用されます。コンテナーはアプリケーションの実行を分離しているため、デフォルトでは、cron、syslog、メールなど、その環境内で実行されている他のすべてのOSデーモンはありません。
Cronは次のようにインストールできます。
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install \
cron \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
dockerfile内。ただし、crontabエントリを実行するには、コンテナの起動プロセスの一部としてcronデーモンを起動する必要もあります。コンテナーで複数のプロセス(cronとアプリ)を実行するために使用できるforegoやスーパーバイザーのようなツールがありますが、そうすることはしばしばアンチパターンの兆候です。