内/に書き込むことができます。以下のDockerfileを使用して6.8イメージを:ドッカー - 非特権ユーザーは、CentOSのオフに基づいて、コンテナ
FROM centos:6.8
RUN adduser -m test
USER test
その後、ドッキングウィンドウのビルドを使用して構築された画像:
docker build -t dockerdemo .
その後、私はコンテナを起動します。
docker run -ti dockerdemo bash
私はコンテナ内だとき、私はBに表示されますコンテナのルートディレクトリに「テスト」ユーザとして書くことができるE:
[[email protected] /]$ ls -ld/
drwxr-xr-x 29 root root 4096 Oct 25 09:49/
[[email protected] /]$ id -a
uid=500(test) gid=500(test) groups=500(test)
[[email protected] /]$ touch /test-file
[[email protected] /]$ ls -l /test-file
-rw-rw-r-- 1 test test 0 Oct 25 09:49 /test-file
は私がtouch
コマンドを実行したときPermission denied
を見て期待しています。
私はDockerfile
を変更し、USER
文を削除し、再構築し、その後、私のことができsu
コンテナ内の「テスト」のユーザーに、私は私が期待する行動を取得する場合:
[[email protected] /]# su - test
[[email protected] ~]$ id
uid=500(test) gid=500(test) groups=500(test)
[[email protected] ~]$ ls -ld/
drwxr-xr-x 29 root root 4096 Oct 25 09:50/
[[email protected] ~]$ touch /test-file
touch: cannot touch `/test-file': Permission denied
は私が誤解がありますユーザー権限がコンテナ内でどのように機能するか?
私の期待する動作を生み出す方法はありますか?
通常のプロセス(cmd/entrypoint)ではなく、サイド/バックドアを通して 'コンテナ内'に移動すると、テストされません。確認のためにうわーをやってください。 – user2105103
「サイド・バック・ドアを通して」と言ったときの意味はあまりよく分かりません。私はそれぞれ "docker run -ti image-name bash"で始めました。 –
つまり、ドッカーがimage-nameを実行しただけであれば、広告されたとおりに動作します。ドキュメントから: USER命令は、イメージの実行時に使用するユーザー名またはUID、およびDockerfile内のRUN、CMD、およびENTRYPOINT命令に続くすべてのRUN、CMDおよびENTRYPOINT命令を設定します。あなたは、上記のどれも使用していないコンテナを実行しています。 – user2105103