찾다

 >  Q&A  >  본문

Docker 컨테이너에서 cron 작업 실행: 단계별 가이드

셸 스크립트를 호출하는 Docker 컨테이너 내에서 cronjob을 실행하려고 합니다.

어제 온라인과 스택 오버플로를 검색했지만 실제로 작동하는 솔루션을 찾을 수 없습니다.

어떻게 해야 하나요?

P粉914731066P粉914731066430일 전588

모든 응답(2)나는 대답할 것이다

  • P粉563831052

    P粉5638310522023-10-11 17:56:26

    승인된 답변은 프로덕션 환경에서는 위험할 수 있습니다.

    사용시CMD cron && tail -f /var/log/cron.log时,cron进程基本上会分叉以便在后台执行cron,主进程退出并让您在前台执行 tailf . 백그라운드 크론 프로세스는 사용자가 알지 못하는 사이에 중지되거나 실패할 수 있으며, 컨테이너는 계속 자동으로 실행되며 오케스트레이션 도구는 컨테이너를 다시 시작하지 않습니다.

    기본 쉘 리디렉션을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

    으아아아

    귀하의 CMD는 다음과 같습니다: CMD ["cron", "-f"]

    하지만 루트가 아닌 사용자로 작업을 실행하고 싶다면 어떻게 해야 할까요?

    회신하다
    0
  • P粉818125805

    P粉8181258052023-10-11 16:39:03

    이미지에서 시작된 컨테이너가 작업을 실행하도록 crontab을 이미지에 복사할 수 있습니다.


    Important: docker-cron 문제 3< 中所述< /a>에서와 같이: cron 파일에는 CRLF가 아닌 LF를 사용하세요.


    그의 Ekito/docker-cron<代码>에서 Running cron jobs with Docker” /github.com/julienboulay" rel="noreferrer">Julien Boulay을 참조하세요.

    으아아아

    2>&12>&1이 무엇인지 궁금하시다면 Ayman Hourieh설명을 통해 설명해드립니다.

    으아아아

    그러나 cron이 죽으면 컨테이너 는 계속 실행됩니다 .

    (Gaafar댓글apt-getapt-get 설치를 덜 시끄럽게 만드는 방법을 참조하세요. :
    apt-get -y install -qq --force-yes cronapt-get -y install -qq --force-yes cron도 작동합니다)

    As Nathan Lloyd에 댓글을 달았습니다:


    또는 hugoShaka답변에 언급된 것처럼 작업 자체가 로그 파일이 아닌 stdout/stderr로 직접 리디렉션되는지 확인하세요.

    으아아아

    마지막 Dockerfile 줄을

    로 바꿉니다. 으아아아

    하지만 루트가 아닌 사용자로 작업을 실행하고 싶다면 어떻게 해야 할까요?

    참조(cron -fcron -f,即cron“前台”)“docker ubuntu cron -f, cron "프런트엔드"에 대해) "docker ubuntu cron -f 아님 일해요


    빌드 및 실행:
    으아아아 으아아아

    Eric댓글

    에 추가되었습니다: 🎜

    "docker CMDtail -f 출력 > 표시되지 않음 "을 참조하세요.


    Jason Kulatunga의 자세한 내용(2021년 4월)은 "Docker에서 Cron 실행"을 참조하세요. Jason의 이미지 보기 기준:

    AnalogJ/docker-cronDockerfile 설치 , 배포판에 따라 다름.

    • 진입점이 초기화된 후 cronie/crond 호출

      으아악
    • 회신하다
      0
  • 취소회신하다