在无权限的docker镜像中拒绝权限。

问题描述 投票:1回答:1

我试图在Kubernetes集群上运行rethinkdb镜像,该集群有严格的安全措施,我们必须以非root身份运行容器,因此我使用用户1000来运行它们,我把Dockerfile改成了下面。

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身份运行其他图像的方式,这对他们来说是有效的。

docker kubernetes rethinkdb docker-image
1个回答
1
投票

由于rethinkdb想创建的。rethinkdb_data/ 我决定自己在Dockerfile中创建那个目录,并改变它的所有者,这样rethinkdb就可以访问它,这就解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.