В доступе отказано в непривилегированном образе docker - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь запустить образ rethinkdb в кластере Kubernetes, который имеет строгие меры безопасности, и мы должны запускать контейнеры как не root, поэтому я использую пользователя 1000 для их запуска и изменил файл Dockerfile на ниже: 1001 *

FROM ubuntu:18.04

RUN apt update && apt install -y wget libcurl4 libprotobuf10 python3-pip

RUN wget https://github.com/srh/rethinkdb/releases/download/v2.3.6.srh.1/rethinkdb_2.3.6.srh.1.0bionic_amd64.deb
RUN dpkg -i rethinkdb_2.3.6.srh.1.0bionic_amd64.deb

ADD rethinkdb_tables /opt/rethinkdb_tables
RUN pip3 install rethinkdb==2.3

ADD entry_point.sh /opt/entry_point.sh

ENV RUN_ENV docker-compose

RUN id
RUN apt-get update && apt-get install -y sudo
RUN groupadd newuser
RUN useradd -u 1000 -m -g newuser newuser
RUN adduser newuser sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN mkdir /data
RUN chown -R newuser:0 /opt/
RUN chown -R newuser:0 /data
USER newuser

ENTRYPOINT [ "sh", "/opt/entry_point.sh" ]
CMD []

entry_point. sh - это небольшой скрипт, который запускает rethinkdb, и как только rethinkdb запускается, он импортирует некоторые таблицы. Но я получаю сообщение об ошибке:

Launch rethinkdb in Kubernetes
Could not create directory 'rethinkdb_data': Permission denied

Как я могу это исправить? Я должен упомянуть, что это способ, которым я использовал для запуска других моих изображений как не- root, и это сработало для них.

1 Ответ

1 голос
/ 29 мая 2020

Так как rethinkdb хотел создать rethinkdb_data в /, я решил сам создать этот каталог в Dockerfile и изменить его владельца, чтобы rethinkdb мог получить к нему доступ, и это решило мою проблему.

...