
Контейнер, запускается всегда от пользователя root, но бывает так, что в Dockerfile прописывают юзера для работы внутри контейнера. И тогда, когда попытаться использовать другого юзера, выдаст ввод пароля, который возможно не знаете, например:
$ docker exec -ti jenkins /bin/bash
jenkins@6350b7b8729c:/$ su -
Password:
Как видно с команды выше, я запустил дженкинс. У контейнера имеется пользователь (тоже дженкинс), но я не знаю от него пароль. Решение — это использовать параметр который выставит нужного юзера при старте контейнера:
$ docker exec -it -u your_container_user your_conatainer container_command
Или:
$ docker exec -it --user your_container_user your_conatainer container_command
Приведу пример с дженкинсом:
$ docker exec -it -u root jenkins /bin/bash
При данной команде, я подключусь к контейнеру как root-юзер.
Да, но если есть необходимость запустить сам контейнер от другого пользователя, то стоит использовать:
$ sudo -u your_user "docker run -d --name jenkins --hostname jenkins.local -p 8080:8080 -p 50000:50000 --restart always -v /usr/local/jenkins/data_2:/var/jenkins_home --dns=10.17.0.3 --dns=10.17.0.4 --dns=1.1.1.1 --dns=74.82.42.42 --add-host=gitlab_local_docker:172.168.0.66 jenkins/jenkins:latest"
Или, сначала переключится в пользователя и запустить от него докер:
$ su YOUR_USER
И потом, можно вот так:
docker run -d \
--name jenkins \
--hostname jenkins.local \
-p 8080:8080 -p 50000:50000 \
--restart always \
-v /usr/local/jenkins/data_2:/var/jenkins_home \
--dns=10.17.0.3 \
--dns=10.17.0.4 \
--dns=1.1.1.1 \
--dns=74.82.42.42 \
--add-host=gitlab_local_docker:172.168.0.66 \
jenkins/jenkins:latest
Вот и все, статья «Запустить Docker контейнер от пользователя в Unix/Linux» завершена.