Dockerコンテナで通常のbashプログラムにアクセスできない理由

Dockerコンテナで通常のbashプログラムにアクセスできない理由

私はドッカーコンテナにいくつかの小さなプログラムをインストールしながら遊んでいます。

現在、次の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ましlscd。ただし、このコンピュータの特定のファイルに移動して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/spotbugsRUN chmod +x /root/spotbugs-4.4.1/bin/spotbugs

また、sudoパッケージはDockerイメージにはインストールされません。必ずしも必要ではありませんが、必要な場合は、RUN apt-get install sudo -yDockerfileにその行を追加して他のツールのようにインストールできます。

関連情報