Какой пользователь по умолчанию для docker exec?

Является ли root пользователем по умолчанию при вызове docker exec (без --user)?

Влияет ли строка USER в Dockerfile на пользователя по умолчанию для docker exec?


person Beau Barker    schedule 29.08.2018    source источник


Ответы (2)


Пользователь по умолчанию в docker exec — это тот же пользователь, который используется для запуска контейнера, который можно установить в docker run или в файле компоновки.

Если вы не указали пользователя явно при запуске контейнера, по умолчанию будет использоваться пользователь, настроенный в образе, вы можете проверить образ, чтобы найти его. Это настраивается последней строкой USER в Dockerfile. Его также можно настроить с помощью родительского образа, указанного в строке FROM.

Если ни изображение, ни команда запуска не указывают пользователя, по умолчанию docker использует root, uid 0.

person BMitch    schedule 29.08.2018

Влияет ли строка 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

Запустите контейнер. Убедитесь, что работающий пользователь является указанным пользователем по умолчанию.

docker exec -it 0903e85fa4de bash
sathya@0903e85fa4de:/$ whoami
sathya
person Sathyajith Bhat    schedule 29.08.2018
comment
Это говорит о запуске образа, а не о выполнении команды внутри работающего контейнера. Когда я делаю docker exec -it my_container bash, я нахожусь в качестве пользователя root, несмотря на строку USER в Dockerfile. - person Beau Barker; 29.08.2018
comment
вы строили образ? Он отлично работает для меня. См. пример выше - person Sathyajith Bhat; 29.08.2018
comment
Вы правы, проблема была в docker-compose.yml, у него user: root. - person Beau Barker; 29.08.2018