在alpine linux构建的docker中使用crontab执行定时任务

最近使用使用docker部署程序时,发现基于alpine的docker里面crond命令都不能正确执行,同事建议使用两个docker后link起来读取,个人感觉还是比较占用资源,经过一番google,发现alpine这个发行版还是和centos,rethat等有一些不同,整理一下部署心得。


1. 首先发现docker时间和宿主机时间不一致,需要调整成一致crontab任务提高可读性,其中加载tzdata包,注意加载完不要删除,注意红色字体,进入docker后输入date看看时间一致不一致,Docker File命令:

RUN apk add --update libc-dev g++ python-dev openldap-dev py-pyldaptzdata \

    && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \


2. alpine的crontab运行机制和其他linux有点差异,在docker中,似乎只能运行root的crontab命令,其路径在/var/spool/cron/crontabs/root中,并不是扫描cron.d/文件夹下面的所有文件,将自己的crontab脚本先copy到docker,再cat到docker的root脚本后面才可以运行,或者直接写脚本到Docker File也可以,如下:

COPY scripts/cron.d/your_job_dir /etc/cron.d/

RUN cat /etc/cron.d/your_job_file>>/var/spool/cron/crontabs/root \
    && echo '* * * * * /bin/echo 'helloword' >> /var/log/cron'>>/var/spool/cron/crontabs/root


3. 运行时直接加上后台的crond即可,我的运行程序是python server.py,在前面加上crond即可,默认后台运行。

CMD crond && python server.py

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用docker run命令来运行Alpine Linuxdocker容器,并在启动容器时指定您想要连接的端口号。例如,要运行一个名为mycontainer的Alpine Linux容器并将远程端口设置为1234,可以使用以下命令:docker run -p 1234:1234 mycontainer。 ### 回答2: 要在Alpine Linux启动一个可以远程连接的Docker容器,需要执行以下步骤: 1. 首先,确保已经在Alpine Linux安装了Docker。可以运行`apk add docker`命令来安装Docker。 2. 接下来,启动Docker守护进程。可以通过运行`service docker start`来启动守护进程。 3. 在Docker守护进程启动后,可以使用`docker run`命令来创建一个运行在Docker容器的实例。为了使容器可以被远程连接,可以添加`-p`参数来指定要映射的端口。例如,可以运行以下命令: ``` docker run -p <host_port>:<container_port> <image_name> ``` 其,`<host_port>`是宿主机上用于远程连接的端口号,`<container_port>`是容器内部应用程序实际运行的端口号,`<image_name>`是要在容器运行的Docker镜像名称。 4. 在Docker容器运行的应用程序实例启动后,可以使用远程连接工具,如SSH或VNC等,连接到Alpine Linux容器。根据连接工具的不同,可以使用容器的IP地址或者宿主机的IP地址连接到容器。 以上步骤完成后,即可在Alpine Linux启动一个可以远程连接的Docker容器。 ### 回答3: 要在Docker启用远程连接,可以按照以下步骤进行操作: 1. 首先,确保已在Docker主机上安装了Docker Engine。在Alpine Linux,可以使用以下命令进行安装: ``` apk add docker ``` 2. 安装完成后,启动Docker服务: ``` service docker start ``` 3. 接下来,编辑Docker的配置文件`/etc/docker/daemon.json`,添加以下内容: ``` { "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"] } ``` 这将允许Docker监听来自远程主机的连接请求。 4. 保存并退出编辑器后,重新启动Docker服务以使更改生效: ``` service docker restart ``` 5. 确保防火墙允许连接到2375端口。如果有防火墙配置,请确保允许流量通过。 现在你应该可以远程连接到Docker主机了。可以使用Docker客户端来连接,例如,你可以在另一台主机上运行以下命令: ``` docker -H tcp://<docker-host>:2375 <docker-command> ``` 其`<docker-host>`是Docker主机的IP地址或主机名,`<docker-command>`是你要在Docker主机上执行的命令。 希望这能帮助到你。请注意,在允许远程连接到Docker主机时,请确保采取适当的安全措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值