星期三, 1月 23, 2019

Cron job in container 小記

Cron job in container 小記

OS: openSUSE Leap 15
Container image:  opensuse/leap:15

昨天在 Cloud Native meet up 遇到 Haway, 被問一個問題, 如何在 container 內執行 cron task

之前沒有這樣嘗試過, 今天就來嘗試一下

想法:
  • 測試使用 cron job 每分鐘寫入訊息到檔案

下載 openSUSE Leap 15 container image

# docker  pull  opensuse/leap:15

執行 container
# docker  run  --rm  -it  opensuse/leap:15  /bin/bash

以下在 container 內操作

安裝 vim 與  cron
15a63ae236e1:/ # zypper  -n  install  vim  cron

撰寫 crontab 檔案

15a63ae236e1:/ #  vi  crontab
內容如下
* * * * * /testcron.sh

作法上就是每分鐘去執行 /testcron.sh
  • 如果是 Dockfile 內的寫法, 覺得可以用 ADD 從本機加進去已經寫好的檔案, 或是使用 RUN 搭配 wget 從網路上抓下來, 這樣不用互動來建立檔案.
  • 預設進入點會在 / 目錄下, 所以檔案的完整路徑就會是  /crontab

給予適當權限
15a63ae236e1:/ #  chmod 644 crontab

接下來編輯要去定時執行的程式
15a63ae236e1:/ #  vi   /testcron.sh
內容如下
echo “Hello, Cron”  >> /tmp/testcron.txt
Date                        >> /tmp/testcron.txt

  • 如果是 Dockfile 內的寫法, 覺得可以用 ADD 從本機加進去已經寫好的檔案, 或是使用 RUN 搭配 wget 從網路上抓下來, 這樣不用互動來建立檔案.

給予適當權限
15a63ae236e1:/ #  chmod a+x  /testcron.sh

觀察相關資訊
15a63ae236e1:/ #  ls  /var/spool/cron/tabs/

使用 crontab 指令匯入剛剛的工作
15a63ae236e1:/ #  crontab  /crontable

觀察相關資訊
15a63ae236e1:/ #  ls  /var/spool/cron/tabs/
root

觀察相關資訊
15a63ae236e1:/ #  ps aux | grep cron

執行 cron 指令
15a63ae236e1:/ #  cron

  • 在 Dockfile 寫法上,  想法上就是放在 CMD 或是 ENTRYPOINT 執行, 啟動 container  就執行

觀察相關資訊
15a63ae236e1:/ #  ps aux | grep cron

等待幾分鐘

觀察相關資訊
15a63ae236e1:/ #  cat   /tmp/testcron.txt
Hello, Cron
Wed Jan 23 08:14:01 UTC 2019
Hello, Cron
Wed Jan 23 08:15:02 UTC 2019
Hello, Cron
Wed Jan 23 08:16:01 UTC 2019


也算是多實驗一個方式
~ enjoy it

Reference:

沒有留言: