docker RUN 명령에서 sudo의 별칭을 지정하는 방법

docker RUN 명령에서 sudo의 별칭을 지정하는 방법

나는 단순히 bash 스크립트를 실행하는 다음 Docker 명령을 작성했습니다.build

RUN cd dir && ./build

그러나 스크립트는 sudo내 컨테이너에 존재하지 않는 을 사용합니다. 스크립트를 편집하지 않고 내부에서 실행할 수 있도록 sudo아무것도 구문 분석하지 않는 별칭을 어떻게 만들 수 있습니까 ?sudo somethingsomethingbuildbuild

답변1

별칭을 사용하려면 스크립트를 편집하고 sudo를 사용하는 스크립트 시작 부분의 줄 위에 다음을 추가해야 합니다.

sudo() {
    "$@"
}
export -f sudo

또는 가 없는 파일을 생성하여 이를 수행할 수 있습니다 sudo. 그런 다음 대신 새 파일을 실행할 수 있습니다../build

RUN cd dir && sed -e 's/sudo //g' ./build > ./buildme && chmod +x ./buildme && ./buildme

먼저, seddelete 명령 sudo-e옵션은 원본 파일을 편집하지 않고 출력을 에코합니다. 다음 명령을 사용하여 출력을 "buildme"라는 새 파일로 리디렉션합니다.> ./buildme

sudo -e 's/sudo //g' ./build > ./buildme

그런 다음 다음을 chmod사용하여 새 파일을 실행 가능하게 만듭니다.

chmod -x ./buildme

마지막으로 ./buildme대신 사용하십시오 ./build.

./buildme

관련 정보