Я пытаюсь запустить Docker-контейнер с пользовательским изображением для данного пользователя. У меня есть entrypoint.sh
, который может изменить работающего пользователя в соответствии с переменной окружения, предоставленной в командной строке Docker, с -e USER=myuser
.
У меня тот же пользователь на хост-компьютере. Это можно сделать на разных хостах, и я могу гарантировать, что этот пользователь существует на любом хосте, который мы используем. Но у меня проблемы, потому что я не могу гарантировать, что числовой идентификатор для этого пользователя всегда одинаков (скажем, 1001). В командной строке выполнения контейнера Docker я монтирую некоторые локальные папки с -v <src>:<tgt>
, а приложение в контейнере создает дополнительные папки и файлы в <tgt>
.
Проблема в том, что, хотя пользователь в хосте и контейнере имеют одно и то же имя (скажем, myuser
), числовой идентификатор для него может измениться (скажем, например, 5000
в хосте и 1001
в контейнере ), поэтому у меня возникают проблемы при чтении файлов и папок по смонтированному пути.
Как лучше всего обеспечить, чтобы во время выполнения не только имя пользователя, но и идентификатор пользователя были одинаковыми на хосте и в работающем контейнере?
EDIT
Понятно, я не объяснил себя ВСЕ, а перепутал вещи. Я попытаюсь объяснить мою проблему еще раз:
Я создал образ на основе Linux, и в этом образе я: а) установил набор пакетов как root
; б) создал определенного пользователя myuser
и переключился на него с помощью USER <usr>
в Dockerfile; и c) скопировал свое собственное программное обеспечение и установил его в образе как пользователь myuser
, и это программное обеспечение должно выполняться этим пользователем.
Я создал того же пользователя myuser
на другом компьютере
запустил контейнер из этого образа на другом компьютере и поделился некоторыми папками (принадлежащими пользователю myuser
) из файловой системы хоста с этим контейнером.
Проблема возникла из-за того, что числовой идентификатор для пользователя myuser
был 1001 в образе Docker и 5000 в другом хосте, когда выполнялся контейнер.
Одним из решений было бы принудительное использование числового идентификатора в любое время, когда пользователь создается на любом хост-компьютере. Проблема в том, что я не могу быть уверен, что это всегда будет возможно на хосте, на котором запускаются образы.