Как мне стать root в контейнере Docker? - PullRequest
0 голосов
/ 04 октября 2019

Я запускаю эту команду на панели настройки локального компьютера: -d --name SonarQube -p 9000: 9000 -p 9092: 9092 sonarqube

Эта команда берет образ ветви из dockerhub, а затем создает контейнеризображения. Теперь я хочу внести некоторые изменения в файл, но в контейнере нет редактора. Я попытался установить vi с помощью apt-get, но он говорит, что для выполнения команды мне нужно быть пользователем root, а когда я пишу sudoон говорит, что команда не найдена. Как мне установить редактор в контейнере?

Я запускаю эту команду для установки vim sudo apt-get install vim

И это ошибка, которую я получаю

bash: sudo: команда не найдена

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Попробуйте передать пользователя команде запуска docker.

docker run -it --user root --name SonarQube -p 9000:9000 -p 9092:9092 sonarqube

Но вы можете столкнуться с той же проблемой при таком подходе, поскольку при этом контейнер будет запускаться с root, а не с sonarqube пользователем. ,

Поэтому я рекомендую перейти к следующему подходу.

FROM sonarqube
USER root
RUN apt-get update \
    && apt-get install -y vim
USER sonarqube
ENTRYPOINT ["./bin/run.sh"]

USER

root (id = 0) - этопользователь по умолчанию в контейнере. Разработчик изображений может создавать дополнительных пользователей. Эти пользователи доступны по имени. При передаче числового идентификатора пользователь не обязательно должен существовать в контейнере.

Разработчик может настроить пользователя по умолчанию для запуска первого процесса с помощью инструкции USER Dockerfile. При запуске контейнера оператор может переопределить инструкцию USER, передав опцию -u.

-u="", --user="": Sets the username or UID used and optionally the groupname or GID for the specified command.

The followings examples are all valid:
--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]

reference-run

1 голос
/ 04 октября 2019

Согласно информации Sonorqube Docker на https://hub.docker.com/_/sonarqube/ файлы конфигурации находятся в постоянных томах, подключенных с привязкой. Вы можете изменить конфиги в локальном каталоге

Изображения содержат установку SonarQube в / opt / sonarqube. Вы можете использовать подключенные постоянные тома для переопределения выбранных файлов или каталогов, например:

sonarqube_conf: / opt / sonarqube / conf: файлы конфигурации, такие как sonar.properties

или вы можете указать их в командной строке

> $ docker run -d --name sonarqube \  
>     -p 9000:9000 \  
>     -v /path/to/conf:/opt/sonarqube/conf \  
>     -v /path/to/data:/opt/sonarqube/data \  
>     -v /path/to/logs:/opt/sonarqube/logs \  
>     -v /path/to/extensions:/opt/sonarqube/extensions \  
>     sonarqube

Вы должны стараться не редактировать файлы непосредственно в контейнере Docker. Если вам действительно нужно получить файл в работающем контейнере, попробуйте отредактировать файл локально, и Docker поместит его в контейнер

https://docs.docker.com/engine/reference/commandline/cp/

docker cp [ОПЦИИ] CONTAINER: SRC_PATH DEST_PATH |-

Если вы все еще действительно хотите использовать sudo в контейнере, см. Этот пост SO , это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...