[英]How to create Dockerfile with R + Anaconda3 + non-root User
[英]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.