【问题标题】:Creating non-root user in jupyter dockerfile在 jupyter dockerfile 中创建非 root 用户
【发布时间】:2017-04-30 07:47:40
【问题描述】:

我从 docker 开始,用 jupyter 和一些 python 库构建了一个图像。最终用户应该能够使用 jupyter 并通过容器访问特定的主机数据目录(读/写权限),但必须是非 root 用户。到目前为止,这是我的 dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y \
python-pip

RUN pip install --upgrade pip && pip install jupyter \
pandas \
numpy

RUN useradd -r -g users A && \
mkdir /myhome && \
chown -R A:users /myhome

EXPOSE 8888

WORKDIR /myhome

CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0"]

我通过 docker run -it -p 8888:8888 -u="A" -v /some/host/files:/myhome 运行它

但后来我收到了一个 jupyter 错误,上面写着 OSError: [Errno 13] Permission denied: '/home/A' Any 帮助表示感谢。非常感谢!

【问题讨论】:

    标签: python docker jupyter-notebook


    【解决方案1】:

    当你用 --entrypoint=bash 启动你的容器时,你会发现你的用户的主目录 /home/A 并没有被创建。为此,您需要在 useradd 命令中添加 -m 标志

    更多信息:您可能想看看 docker-stacks 项目(https://github.com/jupyter/docker-stacks/tree/master/base-notebook 和派生图像)。这似乎与您正在尝试做的事情相匹配,并添加了一些其他有用的东西。例如。运行 dockerized jupyter 时,您需要一个“PID 1 收割机”;否则你退出的笔记本内核会变成僵尸(你可以用谷歌搜索:-)

    另外,当与容器内的非 root 用户共享主机文件时,您通常需要将容器用户的 UID 设置为与主机系统匹配的特定值,以便正确匹配文件系统权限。 docker-stacks 容器也支持这一点。他们的 Dockerfile 至少可以作为样板帮助您运行自己的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多