나는 도커 컨테이너에 몇 가지 작은 프로그램을 설치하면서 놀고 있습니다.
현재 다음 dockerfile이 있습니다.
FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install vim -y
RUN apt-get install wget -y
RUN apt-get install gzip -y
WORKDIR "/root"
RUN wget https://github.com/spotbugs/spotbugs/releases/download/4.4.1/spotbugs-4.4.1.tgz
RUN gunzip -c spotbugs-4.4.1.tgz | tar xvf -
CMD ["ls"]
CMD ["/bin/bash"]
실행해야 하는 특정 파일이 포함된 이미지를 생성합니다.
그런 다음 컨테이너를 빌드합니다.
sudo docker build . --tag img
그런 다음 실행합니다.
sudo docker run -t -d img
실행한 후 쉘 세션을 엽니다.
sudo docker exec -it idhere /bin/bash
이 회의에 참석한 후 나는 whoami
, ls
, 을 할 수 있었습니다 cd
. 하지만 이제 이 컴퓨터의 특정 파일로 이동하여 bash 파일을 실행해야 하며, 권한이 거부되었기 때문에 sudo를 사용하여 실행해야 합니다.
root@0e92aab9b906:~/spotbugs-4.4.1/bin# ./spotbugs
bash: ./spotbugs: Permission denied
root@0e92aab9b906:~/spotbugs-4.4.1/bin# sudo ./spotbugs
bash: sudo: command not found
하지만 sudo가 무엇인지 모르시나요? 일반 bash 프로그램에 액세스할 수 없는 이유는 무엇입니까?
답변1
실행 비트가 설정되지 않았기 Permission denied
때문에 오류가 발생합니다 . Dockerfile에 다음 줄을 추가하여 Docker 이미지에 파일의 실행 비트를 추가합니다.~/spotbugs-4.4.1/bin/spotbugs
RUN chmod +x /root/spotbugs-4.4.1/bin/spotbugs
또한 sudo
패키지는 Docker 이미지에 설치되지 않습니다. 꼭 필요하지는 않지만 필요한 경우 RUN apt-get install sudo -y
Dockerfile에 해당 줄을 추가하여 다른 도구처럼 설치할 수 있습니다.