【问题标题】:Docker Entrypoint not running as root on jupyterhubDocker 入口点未在 jupyterhub 上以 root 身份运行
【发布时间】:2018-10-29 08:24:47
【问题描述】:

我们正在尝试在我们的 jupyterhub 用于单用户服务器的 docker 映像中以 root 身份运行 docker 入口点。我们需要 root 添加一个主机,以从其域在 K8S 上运行的 jupyterhub 上的单个用户 jupyter notebook 服务器内访问内部 git 注册表。

我们已经尝试将域添加到 docker 映像中的 /etc/hosts 文件,该文件由我们的 jupyterhub 在 docker-entrypoint 脚本中为单用户服务器加载(代码可以在底部看到)。

但是,当我们尝试添加主机时,我们得到一个权限被拒绝。 打印输出还说明了原因:

在本地,第一个 whoami 显示 root ,正如我们预期的那样。 然而,在我们的 jupyterhub(在 K8s 上运行)在一个 pod 中启动的 jupyter notebook 上,第一个打印输出已经显示 jovyan

直接在Dockerfile的入口点打印出whoami也可以看到同样的效果:

ENTRYPOINT ["sh", "-c", "echo $(whoami)"]

这意味着它是整个入口点,它不会以 root 身份执行,但会事先以某种方式切换用户。

我们可以防止这种行为还是有好的解决方法?

任何帮助表示赞赏,在此先感谢您! PS: 此外,当我们尝试在 jupyterhub 的入口点脚本中运行 exec su - "jovyan" 时,我们会收到错误消息,即必须从终端运行 su 命令。在本地它可以正常工作。




docker-entrypoint脚本代码(仅供参考):

Dockerfile:

FROM jupyter/datascience-notebook:1145fb1198b2
WORKDIR /usr/src/app

USER root

...

COPY aai-entrypoint.sh /usr/src/app/aai-entrypoint.sh
RUN chmod +x /usr/src/app/aai-entrypoint.sh

ENTRYPOINT ["sh", "/usr/src/app/my-entrypoint.sh"]
CMD ""

我们添加了空 CMD 来覆盖 jupyter base-notebook 的 CMD

my-entrypoint.sh:

#!/bin/bash
echo $(whoami)
echo "xx.xxx.xxx   our.domain.com" >> /etc/hosts
echo "test"
exec su - "jovyan"
echo $(whoami)

# to not overwrite the entrypoint of the jupyter/base-notebook
# see https://github.com/jupyter/docker-stacks/blob/master/base-notebook/Dockerfile
exec tini -g -- "start-notebook.sh"

【问题讨论】:

    标签: docker jupyter-notebook dockerfile jupyter jupyterhub


    【解决方案1】:

    更清洁的解决方案:

    感谢 gitHub 用户为我提供了更简洁的解决方案: 您可以使用 kube-dns 将主机添加到 Kubernetes 的已知主机,使它们可用于那里的部署。

    链接:https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#kube-dns

    替代方案:

    正如我们计划无论如何都授予用户 sudo 访问权限(没有大风险,因为容器只是暂时存在),GRANT_SUDO 配置已经解决了这个问题。如果授予 sudo,入口点也将以 root 身份运行。在脚本中更改为 jovyan 可能仍然是一个好主意。

    您可以通过以下方式为 jupyterhub 设置 GRANT_SUDO 设置:

    如果您不想授予用户 sudo 访问权限,这对您来说仍然是一个可行的解决方案,因为您可能会再次在脚本中删除 jovyan 的 sudo 权限。不过我还没有尝试过,因为我们的场景不需要它。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多