
私の Linux コンピュータ (Ubuntu 23.10) には、次のディレクトリがあります:
/home/steve/foobar/foo
ディレクトリとその中のすべてのファイルは、ユーザー steve (uid 1000) とグループ steve (gid 1000) によって所有されています。
docker内で/host/fooとしてマウントしたい
何を試しても、docker 内のすべてのファイルは、グループ root の root によって所有されてしまいます。それらをユーザー steve とグループ steve によって所有されるようにしたいです。
compose.yaml は次のとおりです。
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile
そしてこれが私のtestapp.dockerfileです
FROM ubuntu:jammy
ARG UID=1000
RUN adduser \
--disabled-password \
--gecos "" \
--home "/home/steve" \
--shell "/bin/bash" \
--uid "${UID}" \
steve
RUN mkdir -p /host/foo
RUN chown steve: /host
RUN chown steve: /host/foo
USER steve
VOLUME /host/foo
構築するには、次のようにします。
docker compose build
実行するには次のようにします:
docker compose run
そして、docker 内でコマンド ラインを取得するには、次のようにします。
docker exec -it pytest1 /bin/bash
/host/foo の下にあるすべてのファイルが steve のグループで steve によって所有されるようにするには、具体的にどのような変更を行う必要がありますか?
ありがとう。
(関係があるなら、docker desktop も実行しています)。
答え1
docker-composeに以下を追加する必要があります
user: "1000:1000"
あなたの場合は
services:
pyapp:
hostname: pytest
container_name: pytest1
command: 'sleep infinity'
user: "1000:1000"
volumes:
- /home/steve/foobar/foo:/host/foo
build:
dockerfile: testapp.dockerfile