質問: dockerコンテナー内でsudoを使用する方法 通常、dockerコンテナはユーザー root を使って実行されます。別のユーザーを使いたいのですが、dockerのuserディレクティブを使用しても問題ありません。しかし、このユーザはコンテナ内で sudo を使用できるはずです。このコマンドはありません。これがこの目的のための単純なdockerfileです:from ubuntu:12.04 run useradd docker && echo "docker:docker" | chpasswd run mkdir -p /home/docker && chown -r docker:docker /home/docker user docker cmd /bin/bash このコンテナーを実行して、私はユーザー 'docker'でログインします。 sudoを使おうとすると、コマンドが見つかりません。そこで私はdockerfileの中に sudo パッケージをインストールしてみました。run apt-get install sudo パッケージsudoが見つかりません
回答: sudoコマンドにアクセスする必要があるスクリプト(これは変更できません)を実行するコンテナーがrootとして実行されている場合は、渡されたコマンドを呼び出す新しいsudoスクリプトを$pathに作成するだけで済みます。例えばあなたのdockerfileで:run if type sudo 2>/dev/null; then \ echo "the sudo command already exists... skipping."; \ else \ echo -e "#!/bin/sh\n\${@}" > /usr/sbin/sudo; \ chmod +x /usr/sbin/sudo; \ fi