Docker 入口点未在 jupyterhub 上以 root 身份运行

z1kanda

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

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

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

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

直接在 Dockerfile 的入口点打印 whoami 可以看到同样的效果,如下所示:

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

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

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

任何帮助表示赞赏,在此先感谢您!PS:此外,当我们尝试exec su - "jovyan"在 jupyterhub 上的入口点脚本中运行时,我们收到错误,必须从终端运行 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

我的入口点.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"
z1kanda

清洁剂解决方案:

感谢 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 权限。不过,我还没有尝试过,因为在我们的场景中不需要它。

希望这可以帮助某人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

来自分类Dev

以root身份运行docker容器

来自分类Dev

Docker无法运行入口点

来自分类Dev

在 Linux 上以 root 身份运行电子

来自分类Dev

如何使用docker以root用户身份在高山映像上运行bash?su:必须是uid才能正常工作

来自分类Dev

以root用户身份运行docker映像,以非root用户身份运行服务

来自分类Dev

以root用户身份运行的Docker的安全性

来自分类常见问题

以非root用户身份在Docker内部运行应用

来自分类Dev

如何以非root用户身份运行docker image?

来自分类Dev

在2020年使用docker-compose以root身份运行命令?

来自分类Dev

不要以root身份运行它!-Docker镜像

来自分类Dev

Composer 在 docker 中以 root 身份运行,即使指定了用户

来自分类Dev

以非 root 用户身份运行 docker 容器进程

来自分类Dev

如何在Ubuntu服务器上以root身份而不是root身份运行命令?

来自分类Dev

Intellij以Linux上的root用户身份运行配置

来自分类Dev

以root以外的系统用户身份在CentOS上运行服务

来自分类Dev

可疑pgrep在Debian Bullseye上以root用户身份运行

来自分类Dev

如何在 Ubuntu 19.04 上以 root 身份运行 Viber?

来自分类Dev

Bash 进程替换在 OS X 上无法以“root”身份运行

来自分类Dev

无法将在Jupyterhub上运行的Jupyterlab嵌入到iframe中

来自分类Dev

如何在Ubuntu服务器(AWS)上运行jupyterhub

来自分类Dev

Tomcat未在Docker映像上运行

来自分类Dev

Tomcat未在Docker映像上运行

来自分类Dev

CouchDB 未在 Docker 映像上运行

来自分类Dev

以root身份运行Celery

来自分类Dev

为什么Docker中的入口点以运行jar的sh开头?

来自分类Dev

Docker运行-具有多个参数的入口点

来自分类Dev

在Windows上运行程序时“找不到入口点”

来自分类Dev

默认的Docker入口点

Related 相关文章

  1. 1

    以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

  2. 2

    以root身份运行docker容器

  3. 3

    Docker无法运行入口点

  4. 4

    在 Linux 上以 root 身份运行电子

  5. 5

    如何使用docker以root用户身份在高山映像上运行bash?su:必须是uid才能正常工作

  6. 6

    以root用户身份运行docker映像,以非root用户身份运行服务

  7. 7

    以root用户身份运行的Docker的安全性

  8. 8

    以非root用户身份在Docker内部运行应用

  9. 9

    如何以非root用户身份运行docker image?

  10. 10

    在2020年使用docker-compose以root身份运行命令?

  11. 11

    不要以root身份运行它!-Docker镜像

  12. 12

    Composer 在 docker 中以 root 身份运行,即使指定了用户

  13. 13

    以非 root 用户身份运行 docker 容器进程

  14. 14

    如何在Ubuntu服务器上以root身份而不是root身份运行命令?

  15. 15

    Intellij以Linux上的root用户身份运行配置

  16. 16

    以root以外的系统用户身份在CentOS上运行服务

  17. 17

    可疑pgrep在Debian Bullseye上以root用户身份运行

  18. 18

    如何在 Ubuntu 19.04 上以 root 身份运行 Viber?

  19. 19

    Bash 进程替换在 OS X 上无法以“root”身份运行

  20. 20

    无法将在Jupyterhub上运行的Jupyterlab嵌入到iframe中

  21. 21

    如何在Ubuntu服务器(AWS)上运行jupyterhub

  22. 22

    Tomcat未在Docker映像上运行

  23. 23

    Tomcat未在Docker映像上运行

  24. 24

    CouchDB 未在 Docker 映像上运行

  25. 25

    以root身份运行Celery

  26. 26

    为什么Docker中的入口点以运行jar的sh开头?

  27. 27

    Docker运行-具有多个参数的入口点

  28. 28

    在Windows上运行程序时“找不到入口点”

  29. 29

    默认的Docker入口点

热门标签

归档