Debian/Ubuntu Docker Swarm의 Cron 작업 요약

Debian/Ubuntu Docker Swarm의 Cron 작업 요약

cron 작업이 별도의 프로세스/컨테이너에서 실행되도록 docker swarm에서 별도의 cron 작업 컨테이너를 구성하는 방법을 알고 싶습니다. 나는 docker swarm에서 모든 cron 작업을 완료할 때까지 몇 가지 기사에서 수집한 지식 중 일부를 요약하고 싶습니다. 가능하다면 의견에 개선 사항을 추가하거나 직접 편집하십시오.

이는 cron 작업용 docker 17.04 및 debian:jessie 컨테이너를 사용하여 테스트되었습니다.

답변1

세워

도커파일cron 작업 컨테이너의 경우 cron을 설치하고 컨테이너가 시작될 때 cron 서비스를 시작한 다음 tail 명령을 사용하여 컨테이너를 계속 실행합니다.

RUN apt-get update && apt-get install -qq -yes cron
CMD service cron start && tail -f /dev/null

일하다

docker-compose.yml

services:
  cron:
    image: debian:jessie
    volumes:
      - mycronjobs:/etc/cron.d

업무 문서

프로젝트 루트 경로에 cron 작업이 포함된 폴더가 있습니다(특수 문자의 경우 파일 이름에 밑줄만 사용).

me@machine:/projectdir$ ls -al
-rw-rw-r--  1 me me  978 Apr 26 17:49 docker-compose.yml
-rw-rw-r--  1 me me 1052 Apr 26 18:06 Dockerfile
drwxrwxr-x  6 me me 4096 Apr 26 16:57 mycronjobs

me@machine:/projectdir$ ls -al mycronjobs
-rw-rw-r--  1 me me  978 Apr 26 17:49 job-dash-bad
-rw-rw-r--  1 me me 1052 Apr 26 18:06 job_underscore_good
-rw-rw-r--  1 me me 1052 Apr 26 18:06 check_running

직업 정의

크론 작업을 할 수 있습니다

  • /var/spool/cron/crontabs/mycrontab이는 cli 도구를 통해 생성됩니다.$ 예약된 작업/ 일명 사용자 crontab

  • /etc/crontabs이것은 시스템 전체의 crontab 컬렉션입니다.

    • '* * * * *' root /bin/touch /projectdir/system_crontab_works # '가 없는 경우
  • /etc/cron.daily매일 실행되는 일반 bash 스크립트가 포함된 폴더입니다.
  • /etc/cron.d이는 다음과 유사한 파일이 포함된 시스템 전체 크론 작업이 포함된 폴더입니다./etc/crontabs. 파일에는 대시가 포함되어서는 안 되며 밑줄만 포함되어야 합니다.
    • sudo vi /etc/cron.d/system_cron
    • '* * * * *' root /bin/touch /projectdir/system_cron.d_works # '가 없는 경우
    • sudo chown 루트:루트 /etc/cron.d/system_cron

관련 정보