首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为容器中cron作业的curator不能正常工作

作为容器中cron作业的curator不能正常工作
EN

Stack Overflow用户
提问于 2017-01-10 06:13:34
回答 1查看 1.2K关注 0票数 0

我有一个运行cron作业的容器的问题。该作业执行curator以删除一些elasticsearch索引。我在stackoverflow上读过很多类似的帖子,但我还是不明白。作业似乎调用了策展人,但索引并未被删除。如果我手动运行,也可以使用相同的命令。

这是我的Dockerfile

代码语言:javascript
复制
FROM ubuntu:xenial

RUN apt-get update && apt-get install python-pip rsyslog -y
RUN groupadd -r curator && useradd -r -g curator curator

RUN pip install elasticsearch-curator

RUN apt-get install cron

COPY delete_indices_cron /etc/cron.d/delete_indices_cron
COPY ./delete_indices.sh /opt/delete_indices.sh
COPY ./configs /opt/config

RUN ["crontab", "/etc/cron.d/delete_indices_cron"]n
RUN chmod 644 /etc/cron.d/delete_indices_cron
RUN chmod 744 /opt/delete_indices.sh
RUN touch /var/log/cron.log
CMD ["rsyslogd"]
ENTRYPOINT ["cron","-f","&&", "tail","-f","/var/log/cron.log"]

之后,我使用以下命令运行图像

代码语言:javascript
复制
docker run -d --link elasticsearch:elasticsearch --name curator mycurator4

和docker ps输出

代码语言:javascript
复制
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                                                                        NAMES
eea96a48aa3a        mycurator4                           "cron -f && tail -f /"   15 minutes ago      Up 15 minutes                                                                                    curator
e584c9b090c8        vagrant-registry.vm:5000/sslserver   "python /sslServer/ss"   2 weeks ago         Up 2 weeks          0.0.0.0:12121->12121/tcp                                                     sslserver
20eee9943664        kibana:4                             "/docker-entrypoint.s"   2 weeks ago         Up 2 weeks          0.0.0.0:5601->5601/tcp                                                       kibana
8c462586982e        logstash:2                           "/docker-entrypoint.s"   2 weeks ago         Up 2 weeks          0.0.0.0:5044->5044/tcp, 0.0.0.0:12201->12201/tcp, 0.0.0.0:12201->12201/udp   logstash
c971fa3e357b        elasticsearch:2                      "/docker-entrypoint.s"   2 weeks ago         Up 2 weeks          0.0.0.0:9200->9200/tcp, 9300/tcp                                             elasticsearch
4af9a78a4b1f        jenkins                              "/bin/tini -- /usr/lo"   2 weeks ago         Up 2 weeks          0.0.0.0:8080->8080/tcp, 50000/tcp   

                                     jenkins

更新:问题是在环境中找不到作为命令的管理员。当我将其更改为相对路径时,问题就解决了。同样基于一些建议,我从/opt/delete_indees.sh文件中删除了.sh,因为ansible“不喜欢这样”!

EN

回答 1

Stack Overflow用户

发布于 2017-01-10 07:31:27

我的天,这是一个方钉,圆孔的情况。

相反,我将只将curator内容和必要的文件添加到映像中,并使用主机系统cron来运行容器。这将确保您具有正确的env vars集以及使用cron时可能遇到的其他杂项问题。

为了回答您的问题,下面是您在容器中运行的命令:

cron -f && tail -f /var/log/cron.log rsyslogd

第一个问题是docker,它的行为不会像您希望的那样,因为命令cron退出,这会导致&&cron完成时退出,因此永远不会调用tail -f。至少,这是我在本地运行&&作为测试时发现的。其次,如果要查看输出,可以运行docker logs curator

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41557854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档