2017-12-18 18 views
3

기본적으로 기본 사용자가 다른 뭔가를 가지고있는 동안 나는 crond -f을 루트로 실행하려고합니다.Docker 컨테이너 내부에서 프로세스 호출을 시작할 수 있습니까? exec 호출의 기본 사용자는 root가 아니어야합니까?

실행중인 crontab은 이미지의 다른 파일에서 중요한 정보를 사용하기 때문에 이러한 파일에 루트 액세스 권한을 부여하고 크론 프로세스를 시작한 다음 새로 생성 된 사용자로 전환하려고합니다. 이렇게하면 cronjob은 필요한 정보를 얻을 수있을뿐 아니라 임원 액세스 권한을 얻을 수있는 사람의 컨테이너에서 중요한 파일을 보호 할 수 있습니다. 하지만 NEWUSER로,

USER root 

CMD ["./runCrons.sh"] 

USER newuser 

을하지만이 루트로 있으며 crond 프로세스를 실행하지 않습니다

은 다음과 같이 몇 가지를 시도했습니다.

누구나 해결책을 찾으면 파기와 실험을 줄일 수 있습니다.

+0

이 토론의 sudoers 자료와 함께 sudo ./runCrons.sh를 시험해보십시오. https://stackoverflow.com/questions/25845538/using-sudo-inside-a-docker-container – dskow

+0

스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

답변

1

Docker 이미지를 만드는 동안 sudo 그룹에 속한 사용자를 만들고 암호없이 모든 sudo 명령을 실행할 수 있습니다.

docker build -t test :

$ cat Dockerfile 

FROM debian:latest 
ENV user_name myuser 
RUN apt-get update 
RUN apt-get install -y sudo 
RUN useradd --create-home -s /bin/bash ${user_name} 
RUN echo "${user_name} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${user_name} 
WORKDIR /home/${user_name} 
USER ${user_name} 
CMD /bin/bash 

가 다음 이미지를 구축 :

sudo를 통과하여 사용자의 이름과 참고 MyUser라는 고정 표시기 테스트 이미지를 생성하는 다음 예를 고려한다.

이제 표준 사용자의 cron 권한 문제를 해결하려면 cron 스크립트에 사용되는 모든 명령이 아래처럼 sudo로 시작하는지 확인하십시오. sudo를를 사용하는 경우 암호가 예상되지 않기 때문에

CMD ["sudo ./runCrons.sh"]

, 다 잘 실행해야하고 당신이 가서 잘되어야합니다.