cron e crontab estão faltando na imagem do docker do ubuntu 16.04

2

Este é o meu Dockerfile

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

Depois que a imagem do docker é criada, faço o login e tento configurar uma tarefa cron para teste. Para minha surpresa, cron e crontab não estão presentes.

# 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

Mas espero que cron esteja presente em uma imagem do Ubuntu. Eu escolhi uma imagem errada ou há algo que eu precise fazer para ativar cron ?

    
por Anthony Kong 01.06.2017 / 10:30

2 respostas

1

O comando cron não é instalado por padrão na imagem do ubuntu: 16.04

Precisa executar apt-get install cron

    
por 01.06.2017 / 12:00
0

As imagens do Docker são mínimas por design e são usadas para criar contêineres, não um sistema operacional completo. Um contêiner está isolando a execução de um aplicativo, por isso ele não terá todos os outros daemons do SO em execução dentro desse ambiente, como cron, syslog, mail, etc., por padrão.

Você pode instalar o cron com:

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

dentro do seu Dockerfile. No entanto, para executar as entradas do crontab, você também precisa iniciar o daemon do cron como parte do processo de inicialização do contêiner. Existem ferramentas como forego e supervisord que você pode usar para executar vários processos em seu contêiner (cron e seu aplicativo), mas isso geralmente é o sinal de um antipadrão.

    
por 02.06.2017 / 15:25

Tags