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:
沒有留言:
張貼留言