【问题标题】:Permission denied in unprivileged docker image非特权 docker 映像中的权限被拒绝
【发布时间】:2020-09-16 19:01:59
【问题描述】:

我正在尝试在具有严格安全措施的 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 身份运行其他图像的方式,这对他们有用。

【问题讨论】:

  • 应用程序实际运行在哪个目录中?它的权限和所有权是什么? entry_point.sh 脚本的实际内容可能与问题有关。
  • 能否分享rethinkdb_tablesentry_point.sh 文件?
  • 它与entry_point.sh 无关,因为正如我提到的,它只是启动rethinkdb,然后导入一些表。问题是rethinkdb想在/创建rethinkdb_data,我自己创建解决了。

标签: docker kubernetes rethinkdb docker-image


【解决方案1】:

由于 rethinkdb 想要在 / 创建 rethinkdb_data,我决定自己在 Dockerfile 中创建该目录并更改其所有者,以便 rethinkdb 可以访问它,这解决了我的问题。

【讨论】:

  • 不错。你可以解决这个问题。
猜你喜欢
  • 2020-07-21
  • 2023-03-22
  • 2020-08-31
  • 2021-11-05
  • 1970-01-01
  • 2022-01-08
  • 2022-01-18
  • 2021-04-12
  • 2022-01-03
相关资源
最近更新 更多