docker 컨테이너에서 cron을 실행하는 중 오류가 발생했습니다. 내가 놓친 것이 있나요?

docker 컨테이너에서 cron을 실행하는 중 오류가 발생했습니다. 내가 놓친 것이 있나요?

나는 팔로우했다이것내 도커 컨테이너(siwatinc/ubuntu-playground) 내의 unRAID 서버를 안내하고 성공적으로 작동하도록 했습니다. UbuntuPlayground라는 도커 이미지에 cron을 설치했는데 cron 작업이 실패할 때까지 가이드의 모든 항목이 성공적으로 작동했습니다. 문제를 찾아보니 도커 이미지에 systemd(실제로 IDK가 무엇인지)가 실행되지 않아서 cron이 작동하려면 특별한 항목을 다운로드해야 하기 때문이라고 생각합니다. 그래서 나는 그것에서 나아갔습니다. 그러나 다음 명령을 사용하여 Docker 컨테이너의 bash에 있는 경우:

docker exec -it UbuntuPlayground bash

쉘 스크립트가 있는 홈 디렉토리에서 ./speedtest.sh를 실행할 수 있으며 인터넷에서 속도 테스트를 수행하고 Google 드라이브에 업로드합니다. 그래서 도커 이미지를 그대로 두고 unraid 서버의 SSH에서 다음 명령을 실행한다는 사실도 발견했습니다.

docker exec -it UbuntuPlayground /root/speedtest.sh

코드가 성공적으로 실행됩니다. Google 드라이브에서 가장 빠른 결과를 볼 수도 있습니다. 그래서 나는 해당 명령을 jsut 실행하기 위해 unraid에서 cronjob을 만들어 보았습니다. 그래서 저는 다음을 사용하여 cron을 테스트했습니다.

0 * * * * docker exec -it UbuntuPlayground /root/speedtest.sh

몇 시간 동안 실행시켜서 확인해 보았는데 작동하지 않았습니다. 그래서 호스트에서 쉘 스크립트를 만들어 명령을 실행해 보았습니다. 내용은 다음과 같습니다.

#!/bin/bash
docker exec -it UbuntuPlayground /root/speedtest.sh

그것은 단지 speedtest.sh라고 불립니다. 그래서 crontab에 speedtest.sh를 추가했습니다.

0 * * * * /root/speedtest.sh

그런 다음 잠에 들었고 /var/log/syslog에 이 문제가 발생했습니다.

Nov  3 21:00:01 TrevNas2 sudo:     root : TTY=unknown ; PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -it UbuntuPlayground /root/speedtest.sh
Nov  3 21:00:01 TrevNas2 crond[1861]: exit status 1 from user root /root/speedtest.sh
Nov  3 21:00:06 TrevNas2 sSMTP[26673]: Creating SSL connection to host
Nov  3 21:00:06 TrevNas2 sSMTP[26673]: SSL connection using TLS_AES_256_GCM_SHA384
Nov  3 21:00:07 TrevNas2 sSMTP[26673]: Authorization failed (534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor j79sm5194000ywj.11 - gsmtp)
Nov  3 21:00:07 TrevNas2 crond[1861]: exit status 1 from user root /usr/local/sbin/mover &> /dev/null
Nov  3 22:00:01 TrevNas2 sudo:     root : TTY=unknown ; PWD=/root ; USER=root ; COMMAND=/usr/bin/docker exec -it UbuntuPlayground /root/speedtest.sh
Nov  3 22:00:01 TrevNas2 crond[1861]: exit status 1 from user root /root/speedtest.sh
Nov  3 22:00:06 TrevNas2 sSMTP[21643]: Creating SSL connection to host
Nov  3 22:00:06 TrevNas2 sSMTP[21643]: SSL connection using TLS_AES_256_GCM_SHA384
Nov  3 22:00:07 TrevNas2 sSMTP[21643]: Authorization failed (534 5.7.9  https://support.google.com/mail/?p=InvalidSecondFactor x64sm4861319ywb.55 - gsmtp)
Nov  3 22:00:12 TrevNas2 crond[1861]: exit status 1 from user root /usr/local/sbin/mover &> /dev/null

따라서 종료 코드 1로 인해 실패합니다. 나는 이것의 문제가 무엇인지 이해하지 못합니다. 나는 그것이 내 머리 바로 위에 있는 어떤 문제라고 생각했습니다. 종료 코드 1을 검색했는데 아무것도 찾을 수 없습니다. cron 실행 시 docker 컨테이너의 문제를 해결해야 합니까, 아니면 호스트 컴퓨터의 cron 문제를 해결해야 합니까? 아니면 해결 방법을 아는 사람이 있나요?

이 글을 모두 읽으셨다면 감사드립니다.

답변1

도커 컨테이너에서 작동하지 않는 이유를 알아냈습니다. cron이 실행되지 않았습니다. 사용이것스택 교환 다음 명령을 실행해야 한다는 것을 알았습니다.

/etc/init.d/cron start

그 후 매분마다 작동하는 파일을 건드리는 기본 크론태스크를 테스트한 다음 추가했습니다.

*/30 * * * * /root/speedtest.sh

내 crontab에 다시 접속하면 가장 최근에 실행된 속도 테스트를 볼 수 있습니다. 따라서 실제로 실행되지 않는 cron의 경우였습니다.

관련 정보