
У меня на компьютере 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 принадлежали Стиву и группе Стив?
Спасибо.
(Если это имеет значение, я также использую 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