私はドッカーコンテナにいくつかの小さなプログラムをインストールしながら遊んでいます。
現在、次の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にその行を追加して他のツールのようにインストールできます。