Docker(1.3.1)を使用して、コンテナー内にRPMを構築しています。
docker run -v /home/matt/build:/build build-rpm /build/build-pkg.sh
これは正常に機能し(私のユーザーはdocker
グループに属しているため、Sudoは不要です)、完了した.rpm
現在のディレクトリ内のファイル。問題は、ファイルがルートによって所有されているように作成されることです。
Dockerを実行するのと同じユーザーが所有するファイルが作成されるように、どうすれば調整できますか?
(カスタムイメージのDockerfileで)ユーザーを作成し、コンテナーで使用されるユーザーとして設定しようとすることができます。
RUN adduser --system --group --Shell /bin/sh auser \
&& mkdir /home/auser/bin
USER auser
次に、docker run -v /home/matt/build:/build build-rpm
は、/ buildの共有フォルダーをauser
としてマウントします。
issue 2259 に記載されている別のオプション:
ボリュームをバインドマウントする前に(ホスト側で)
chown
すると、機能します。
その場合、次のことができます。
mkdir /tmp/www
chown 101:101 /tmp/www
docker run -v /tmp/www:/var/www ubuntu stat -c "%U %G" /var/www
(仮定して
101:101
それはUID:GID
のwww-data
コンテナ内のユーザー。
Dockerはrootとして実行され、ユーザーがその仮想環境内にいるかはわかりません(たとえsudoersグループに属している場合でも)。ただし、任意の名前で呼び出すことができるドッカーイメージを作成しながら、非ルートユーザーを作成できます。
# create a non-root user named tester,
# give them the password "tester" put them in the Sudo group
RUN useradd -d /home/tester -m -s /bin/bash tester && echo "tester:tester" | chpasswd && adduser tester Sudo
# start working in the "tester" home directory
WORKDIR /home/tester
COPY ./src
# Make the files owned by tester
RUN chown -R tester:tester /home/tester
# Switch to your new user in the docker image
USER tester