Задать вопрос

Как в контейнере сделаться рутом?

Использую готовый образ

Примонтирую к контейнеру, созданному на базе этого образа, вольюм, с файлами, которые были созданы в другом контейнере от рута. Естественно, в данном контейнере получаю permission denied на чтение этих файлов

Замечу, что пользователь nobody: 6328023f4b92a406070801.png

Что я пробовал. Собрать новый образ на базе этого, где прописывал USER root, - не помогло, выдавал примерно следующую ошибку:
unable to find user root: no matching entries in passwd file

Что делал еще:
RUN echo "root:x:0:0:root:/root:/bin/bash" >> /etc/passwd
USER root

результат был таким:
container_linux.go:380: starting container process caused: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown


Может у кого-нибудь получится либо запустить конкретно этот образ под root, либо подскажите как можно поступить.

P.S. это официальный образ продукта anycable от злых марсиан.
А пытаюсь сделать я anycable-go TLS:
anycable-go --port=443 -ssl_cert=path/to/ssl.cert ...
Собственно нет прав на чтение сертификата у nobody
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
Vamp
@Vamp
Ваш образ создан from scratch. Это значит, что в нём только приложение. И больше ничего лишнего нет. В том числе и бинарника /bin/bash, путь к которому вы указываете в /etc/passwd

Возьмите образ на основе альпины: anycable/anycable-go:1.2-alpine
Там есть /bin/sh, пакетный менеджер и ещё всяких разных утилит по мелочи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@khevse
Используйте при запуске обоих контейнеров опцию установки текущего пользователя, тогда права на файлы будут одинаковые как в контейнерах, так и в самой операционной системе, в которой выполняется запуск docker
docker run -it --rm --user "$(id -u):$(id -g)" -v"..." imagename:imagetag
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы