Влияет ли строка USER в Dockerfile на пользователя по умолчанию для docker exec?
Да, , как указано в документации :
Инструкция USER задает имя пользователя (или UID) и, необязательно, группу пользователей (или GID) для использования при запуске образа и для любых инструкций RUN, CMD и ENTRYPOINT, следующих за ним в Dockerfile.
Вот пример Dockerfile, который создает пользователя и делает его запускаемым пользователем.
cat Dockerfile
FROM ubuntu:latest
RUN useradd -r sathya
USER sathya
Построить изображение
docker build -t sathya:user .
Sending build context to Docker daemon 19.46kB
Step 1/3 : FROM ubuntu:latest
---> 113a43faa138
Step 2/3 : RUN useradd -r sathya
---> Running in 5b72508a891d
Removing intermediate container 5b72508a891d
---> b81692196e13
Step 3/3 : USER sathya
---> Running in d43d399a86ac
Removing intermediate container d43d399a86ac
---> c0388a898992
Successfully built c0388a898992
Successfully tagged sathya:user
Запустить контейнер
docker run -it -d sathya:user bash
0903e85fa4de4bb820f015f3ff2bbca9eb2c038814ff7ea809519334687597c7
Exec контейнер. Убедитесь, что запущенный пользователь является пользователем по умолчанию
docker exec -it 0903e85fa4de bash
sathya@0903e85fa4de:/$ whoami
sathya