web-dev-qa-db-ja.com

Docker内でvisudoを実行できません。 sudoersファイルが存在しません

Ubuntu n00bはこちら。次の単純なDockerfileを使用して作成したDockerコンテナーをいじっています。

FROM ubuntu
CMD ["tail","-f","/dev/null"]

コンテナー内で、rootユーザーとして、visudoを実行して、次の応答を取得します。

bash:visudo:コマンドが見つかりません

ls /etcを実行しましたが、sudoersファイルも持っていないようです。

これらを存在させるためにDockerfileに入れるべき特別なものはありますか?

1
Shaul Behr

別の答えSudoからデフォルトでインストールされていません。 Sudoをインストールするには:

apt-get update
apt-get install Sudo
2
Shaul Behr

コンテナを構築すると、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で実行します。

1
xenoid