簡體   English   中英

在jupyter dockerfile中創建非root用戶

[英]Creating non-root user in jupyter dockerfile

我從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'感謝任何幫助。 非常感謝!

當使用--entrypoint = bash啟動容器時,您會發現尚未創建用戶的主目錄/ home / A。 為此,您需要將-m標志添加到useradd命令中

更多信息:您可能想看一下docker-stacks項目( https://github.com/jupyter/docker-stacks/tree/master/base-notebook和派生圖像)。 這似乎與您要嘗試執行的操作相匹配,並添加了一些其他有用的東西。 例如,運行dockerized jupyter時,您需要“ PID 1收割機”; 否則,您退出的筆記本內核會變成僵屍(您可以在Google上搜索它:-)

另外,與容器內的非root用戶共享主機文件時,通常需要將容器用戶的UID設置為與主機系統匹配的某個特定值,以便正確匹配文件系統權限。 docker-stacks容器也支持。 他們的Dockerfile至少可以幫助您運行自己的樣板文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM