Docker
為什麼我無法訪問 docker 容器中的正常 bash 程序
我正在擺弄在 docker 容器中安裝一些小程序。
目前,我有這個 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
執行後,我在其中打開一個 shell 會話:
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 程序嗎?
您收到
Permission denied
錯誤是因為~/spotbugs-4.4.1/bin/spotbugs
沒有設置執行位。在 Dockerfile 中添加該行RUN chmod +x /root/spotbugs-4.4.1/bin/spotbugs
以在 Docker 映像中添加該文件的執行位。此外,該
sudo
軟體包未安裝在該 Docker 映像中。您不應該需要它,但如果您真的需要它,您可以像安裝其他工具一樣安裝它,方法是將該行添加RUN apt-get install sudo -y
到 Dockerfile。