Docker CentOS 7-cron不在本地计算机中工作

Docker CentOS 7-cron不在本地计算机中工作,cron,docker,centos7,Cron,Docker,Centos7,在我的VPS中,我创建了一个docker映像,其中包含作为entry命令运行的cron。我还有一个示例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 &

在我的VPS中,我创建了一个docker映像,其中包含作为entry命令运行的cron。我还有一个示例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"]
start.sh

#!/bin/bash

__run_cron() {
    echo "Running the run_cron function."
    crond -n
}

# Call all functions
__run_cron
然后我像这样构建它:

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 hub我的账户上

docker push lysender/cron-php-gearman
然后拉入我的本地机器,像在我的VPS主机上那样运行它

但是,没有迹象表明cron实际运行,例如:
/tmp/logit.log
文件从未创建

可能出了什么问题

机器规格:

  • VPS:KVM上运行Slackware 14.1的Linode,Docker 1.6.2
  • 本地:运行Slackware 14.1、Docker 1.6.2的VirtualBox虚拟机-与VPS相同
两者都作为普通用户(非root用户)运行

然而,不同之处在于CentOS的图像

  • VPS:5周大
  • 本地:4个月大
我提取了一个新的CentOS7图像,这样两个图像都有5周的历史,但我没有先删除该图像(只是更新/提取)


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

我决定不使用stock cron守护程序,而是基于此Dockerfile切换到基于python的devcron

这是我的新文件

Devcron:

原因是,在清除了整个本地docker安装并安装了新的docker映像之后,stock cron仍然无法在我的本地设置中工作

这将是我暂时的解决办法


感谢您的帮助。

在Centos上似乎是一个特定于容器的问题:

运行sed-i'/session required pam_loginuid.so/d'/etc/pamd.d/crond

如果在
docker exec
之后运行
ps
,则
crond
是否正在运行?是:
crond-n
正在运行。以下是全部详细信息:本地与vps ps aux:
docker push lysender/cron-php-gearman