2017-08-04 6 views
0

私はこのパターンに従いDockerfileている:私はこのファイルを編集するために私の画像を設定することはできませんなぜ動作しない部分が...の/etc/nsswitch.confをドッカー画像に保護されたテキストファイルを変更するドッカーファイルを作成するにはどうすればよいですか?

RUN echo "[DOCKER BUILD] Installing image dependencies..." && \ 
    apt-get update -y && \ 
    apt-get install -y sudo package_names ... 

RUN useradd -ms /bin/bash builder 
# tried this too, same error 
# RUN useradd -m builder && echo "builder:builder" | chpasswd && adduser builder sudo 
RUN mkdir -p /home/builder && chown -R builder:builder /home/builder 
USER builder 

RUN sudo sed -i '/hosts:/c\hosts: files dns' /etc/nsswitch.conf 

を編集していますか?

私はuseraddのいくつかの異なる方法を微調整しようとしましたが、現在の誤差がある:

ステップ8/10:の/ etc/nsswitchのRUNのsudoは-i ':/ C \ホストファイル、DNS /ホストのをセッド.conf ---> 97cd39584950で実行 sudo:ttyが存在せず、askpassプログラムが指定されていない '/ bin/sh -c sudo sed -i'/hosts:/ c \ hosts:files dns '/ etc/nsswitch.conf 'がゼロ以外のコードを返しました:1

イメージの内部でこのファイルを編集するにはどうすればよいですか?

コメントhereは、ドッカーファイル内のすべての操作をrootとして実行する必要があることを示唆しています。これはsudoが必要ないと信じさせています。なぜ私はこれを見ますか?

RUN sed -i '/hosts:/c\hosts: files dns' /etc/nsswitch.conf 

ステップ8/10:RUNのsed -i '/ホスト:/ C \ホスト:ファイルのDNS' の/etc/nsswitch.conf ---> sedのad56ca17944c での実行:一時開くことができませんでしたファイル/ etc/sed8KGQzP:許可が拒否されました

答えて

0

私はそれを考え出した - 私はsudoをせずにこのタスクを実行することができますが、私はUSERビルダーを呼び出す前にそれを行う場合にのみ。ドッカーは、ユーザーを作成する前に正しいアクセス権を持っているようです。

+0

私はちょうど今週のDockerを使い始めましたので、塩分を補充していましたが、ドッカーの中のデフォルトのユーザーは "root"なので、ユーザーを別のものに変更するまでは(例えば、 'USER builder 'あなたはrootですので、ユーザーを変更する前にルート権限が必要な操作を実行してください。 –

0

問題は、sudoのパスワードまたはパスワードの要求にあります。あなたは自由にあなたのsudoを実行する必要が

<your-container-user> ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop 

:次のように、パスワードのsudoの要求を削除すると関連したコンテナにENV_VARIABLESを渡す必要があります。

関連質問:

How to fix 'sudo: no tty present and no askpass program specified' error?

+0

私がコメントアウトした行をまだ複製していないsudoersで編集しているdockerfileの内部をどのように示していますか? – adowdy

関連する問題