Debian/Ubuntu Docker Swarm 요약의 Cron 작업

Debian/Ubuntu Docker Swarm 요약의 Cron 작업

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

이는 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/mycrontabcli 도구를 통해 생성됨$ 크론탭/ 일명 사용자 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

관련 정보