Запустить Docker контейнер от пользователя в Unix/Linux

Контейнер, запускается всегда от пользователя 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» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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