Docker CentOS 7 – cron不能在本地机器上工作

在我的VPS中,我创build了一个包含cron作为入口命令的docker镜像。 我也有一个示例cron文件,说它应该每5分钟执行一次命令。

Dockerfile:

FROM centos:centos7 MAINTAINER Lysender <foo@example.com> # Install packages RUN yum -y update && yum clean all RUN yum -y install epel-release && yum clean all RUN yum -y install git \ bind-utils \ pwgen \ psmisc \ net-tools \ hostname \ curl \ curl-devel \ sqlite \ cronie \ libevent \ gearmand \ libgearman \ libgearman-devel \ php \ php-bcmath \ php-common \ php-pear \ php-mysql \ php-cli \ php-devel \ php-gd \ php-fpm \ php-pdo \ php-mbstring \ php-mcrypt \ php-soap \ php-xml \ php-xmlrpc \ php-pecl-gearman && yum clean all # Configure servicies ADD ./start.sh /start.sh ADD ./my-cron.conf /etc/cron.d/my-cron RUN chmod 755 /start.sh CMD ["/bin/bash", "/start.sh"] 

my-cron.conf文件:

 # Run command every 5 minutes */5 * * * * root echo "foo" >> /tmp/logit.log 2>&1 

start.sh

 #!/bin/bash __run_cron() { echo "Running the run_cron function." crond -n } # Call all functions __run_cron 

然后我这样构build:

 docker build --rm -t lysender/cron-php-gearman . 

然后运行:

 docker run --name cron -d lysender/cron-php-gearman 

5分钟后,我检查了cron的工作原理:

 docker exec -it cron bash cat /tmp/logit.log 

有用。 所以我把它推到docker集线器到我的帐户。

 docker push lysender/cron-php-gearman 

然后拉我的本地机器,像我在我的VPS主机上做的那样运行它。

但是,没有实际运行cron的信号,例如: /tmp/logit.log文件从不创build。

什么可能是错的?

机器规格:

  • VPS:Linode在KVM,Docker 1.6.2上运行Slackware 14.1
  • 本地:运行Slackware 14.1的VirtualBox VM,Docker 1.6.2 – 与VPS相同

两者都以普通用户身份运行(非root)。

但是,不同之处在于CentOS镜像。

  • VPS:5周龄
  • 本地:4个月大。

我已经拉了一个新的CentOS7图像,以便两者都将是5周大,但我没有删除图像(只是更新/拉)。

所以我拉了CentOS 7,然后拉lysender / cron-php-gearman。 我的理解是,它应该在最新的CentOS 7映像上运行。

在Centos上看起来像一个容器特定的问题: https : //github.com/CentOS/CentOS-Dockerfiles/issues/31 RUN sed -i '/session required pam_loginuid.so/d' /etc/pamd.d/crond

我决定不使用stock cron守护进程,并根据这个Dockerfile切换到一个基于python的devcron。

https://registry.hub.docker.com/u/hamiltont/docker-cron/dockerfile/

这是我的新Dockerfile。

https://github.com/lysender/docker-cron-php-gearman/blob/master/Dockerfile

Devcron: https ://bitbucket.org/dbenamy/devcron

原因是,在清除整个本地Docker安装并安装新的Docker镜像后,stock cron仍然不能正常工作。

这将是我现在的临时解决scheme。

谢谢您的帮助。