Docker CentOS 7-cron不在本地计算机中工作
在我的VPS中,我创建了一个docker映像,其中包含作为entry命令运行的cron。我还有一个示例cron文件,它说它应该每5分钟执行一次命令 Dockerfile: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 &
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相同
- VPS:5周大
- 本地:4个月大
所以我拉了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