2016-12-14 5 views
0

私はdockerから始めて、jupyterといくつかのpythonライブラリでイメージを構築しました。エンド・ユーザーは、jupyterを使用して、コンテナ(読取り/書込み権限)を介して特定のホスト・データ・ディレクトリにアクセスできますが、root以外のユーザーである必要があります。ここに私のdockerfileは、これまでのところです:jupyter dockerfileのroot以外のユーザーの作成

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

をすることによって、これを実行するしかし、私はすべてのヘルプは感謝OSError: [Errno 13] Permission denied: '/home/A' 言うjupyterのエラーを得ました。どうもありがとう!

答えて

0

--entrypoint = bashを使用してコンテナを起動すると、ユーザーのホームディレクトリ/ home/Aが作成されていないことがわかります。これを行うには、useraddコマンドに-mフラグを追加する必要があります。

さらに詳しい情報:ドッカースタックプロジェクト(https://github.com/jupyter/docker-stacks/tree/master/base-notebookと派生したイメージ)を見てみるとよいでしょう。それはあなたがやろうとしているものと一致するように見え、他の役に立つものを追加します。例えば。 dockerized jupyterを実行しているときは、 "PID 1リーパー"が必要です。そうしないと、終了したノートブックのカーネルがゾンビに変わることがあります(それについては、Googleでもできます:-)

また、ホストファイルをコンテナ内のroot以外のユーザと共有するときは、コンテナユーザのUIDを特定の値がホストシステムと一致するため、ファイルシステムのアクセス許可が適切に一致します。ドッカースタックコンテナもそれをサポートしています。彼らのDockerfilesは、少なくとも自分のものを実行するための定型文として役立つかもしれません。

関連する問題