Cron

ubuntu 16.04 的 docker 映像中缺少 cron 和 crontab

  • January 16, 2020

這是我的 Dockerfile

FROM ubuntu:16.04
RUN apt-get update -y && apt-get install -y \
 git \
 python \
 python-pip

創建 docker 映像後,我登錄並嘗試設置一個 cron 作業進行測試。令我驚訝的是,croncrontab沒有出現。

# 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

鏡像ubuntu:16.04中預設不安裝cron命令

需要跑apt-get install cron

Docker 鏡像在設計上是最小的,它們用於創建容器,而不是完整的作業系統。容器隔離應用程序的執行,因此預設情況下,它不會在該環境中執行所有其他作業系統守護程序,如 cron、syslog、郵件等。

您可以使用以下命令安裝 cron:

RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install \
     cron \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

在你的 Dockerfile 中。但是,要執行 crontab 條目,您還需要在容器啟動過程中啟動 cron 守護程序。您可以使用諸如 forego 和 supervisord 之類的工具在容器中執行多個程序(cron 加上您的應用程序),但這樣做通常是反模式的標誌。

引用自:https://serverfault.com/questions/853364