Ubuntu n00bはこちら。次の単純なDockerfileを使用して作成したDockerコンテナーをいじっています。
FROM ubuntu
CMD ["tail","-f","/dev/null"]
コンテナー内で、rootユーザーとして、visudo
を実行して、次の応答を取得します。
bash:visudo:コマンドが見つかりません
ls /etc
を実行しましたが、sudoersファイルも持っていないようです。
これらを存在させるためにDockerfileに入れるべき特別なものはありますか?
別の答え :Sudo
からデフォルトでインストールされていません。 Sudo
をインストールするには:
apt-get update
apt-get install Sudo
コンテナを構築すると、rootになるため、Sudoなしでユーザーを作成できます。
既にUSER
ディレクティブを持つコンテナイメージを派生している場合、特権コマンドを使用する前に、USER root
で再びルートになることができます。後で別のUSER
ディレクティブを発行して、再び実行ユーザーになることができます。言い換えると:
非特権ユーザーを設定する画像:
# "plainuser" image
FROM debian
RUN groupadd -g 1000 appgroup && useradd -g appgroup -u 1000 appuser
USER appuser
ENTRYPOINT ["/usr/bin/id"]
docker run --rm plainuser
で実行して、ユーザーappuser
で実際に実行されることを確認します。
それを導き出しましょう:
# "otheruser" image
FROM plainuser
USER root # Become root again
RUN groupadd -g 1001 appgroup2 && useradd -g appgroup2 -u 1001 appuser2
USER appuser2 # Set new execution user
docker run --rm otheruser
で実行します。