JupyterNotebook에서 파일을 만들려고하면 permission denied가됩니다.
5865 단어 JupyterLab파이썬도커jupyternotebook
소개
환경을 만들면 권한 관계에서 오류가 발생할 수 있습니다.
권한 관계 오류는 해결하기 어려운 이미지가 있습니다.
오늘은, JupyterNotebook (JupyterLab)로 권한 관계의 에러가 나와, 해결했으므로 정리하고 싶습니다.
환경
문제
Docker를 사용하여 JupyterNotebook (JupyterLab) 환경을 만들고 액세스했습니다.
그리고 신규 파일(.ipynb)을 작성한 결과 다음과 같은 에러가 나왔습니다.
JupyterNotebook
JupyterLab
permission denied
와 같이 권한이 부여되지 않았기 때문에 오류입니다.
또, 이 에러는 Docker image를 docker run
해 기동했을 때에 일어나는 것으로, docker-compose up
로 컨테이너를 기동했을 때에는 나오지 않았습니다.
조사
우선은 Docker의 컨테이너 안에 들어가, 이하의 커멘드를 넣습니다.
$ ls -la
이 명령은 여기을 확인하십시오.
그러면 다음과 같이 표시됩니다.
이번, JupyterNotebook (JupyterLab)를 이용하고 있는 디렉토리는, 마지막으로부터 2행째의 data
라고 하는 곳입니다만, 권한이 root
가 되어 있습니다.
Jupyter를 사용하는 경우 jovyan
여야 합니다. 이것이 오류의 원인이었습니다.
해결 방법
방법 1. Dockerfile 검토
Dockerfile에서 ./data라는 디렉토리를 만드는 곳을 확인하면,
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
루트 사용자로 디렉토리를 작성했습니다.
이 사용자를 jovyan
로 변경하여 data 디렉토리를 작성하십시오.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
# ユーザー変更
ENV GRANT_SUDO=no
USER jovya
RUN mkdir ./data
# upyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
그러자 무사히 성공했습니다.
이 Dockerfile에 대해서는 여기 리포지토리에서 확인할 수 있습니다.
방법 2. 명령으로 권한 변경
먼저 컨테이너 안으로 들어갑니다.
$ docker exec -it [コンテナ名] sh
그런 다음 권한을 변경합니다.
# sudo chown -R [変更するユーザー名] [変更するディレクトリorファイル]
$ sudo chown -R jovyan data
이 명령은 여기을 참조했습니다.
비밀번호가 필요하므로 넣어주세요.
내 경우에는 Dockerfile
에서 암호를 설정하고 있습니다.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
(省略)
암호는 not_password
입니다.
password: (not_password ただし表示はされない)
user
에서 jovyan
로 변경되었습니다.
그러나 이 방법은 docker run
할 때마다 변경이 필요하므로 Dockerfile에서 권한 변경을 처리합니다.
Dockerfile을 다음과 같이 변경합니다.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
# 権限変更
RUN chown -R jovyan data
이제 파일을 만들 수 있습니다.
결론
이번에는 권한을 다루었습니다. 최근 권한으로 비슷한 일을 했기 때문에 잘 대처할 수 있었습니다.
움직이지 않으면 우선 확인해 보는 것은 중요합니다.
참고 기사
우선은 Docker의 컨테이너 안에 들어가, 이하의 커멘드를 넣습니다.
$ ls -la
이 명령은 여기을 확인하십시오.
그러면 다음과 같이 표시됩니다.
이번, JupyterNotebook (JupyterLab)를 이용하고 있는 디렉토리는, 마지막으로부터 2행째의
data
라고 하는 곳입니다만, 권한이 root
가 되어 있습니다.Jupyter를 사용하는 경우
jovyan
여야 합니다. 이것이 오류의 원인이었습니다.해결 방법
방법 1. Dockerfile 검토
Dockerfile에서 ./data라는 디렉토리를 만드는 곳을 확인하면,
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
루트 사용자로 디렉토리를 작성했습니다.
이 사용자를 jovyan
로 변경하여 data 디렉토리를 작성하십시오.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
# ユーザー変更
ENV GRANT_SUDO=no
USER jovya
RUN mkdir ./data
# upyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
그러자 무사히 성공했습니다.
이 Dockerfile에 대해서는 여기 리포지토리에서 확인할 수 있습니다.
방법 2. 명령으로 권한 변경
먼저 컨테이너 안으로 들어갑니다.
$ docker exec -it [コンテナ名] sh
그런 다음 권한을 변경합니다.
# sudo chown -R [変更するユーザー名] [変更するディレクトリorファイル]
$ sudo chown -R jovyan data
이 명령은 여기을 참조했습니다.
비밀번호가 필요하므로 넣어주세요.
내 경우에는 Dockerfile
에서 암호를 설정하고 있습니다.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
(省略)
암호는 not_password
입니다.
password: (not_password ただし表示はされない)
user
에서 jovyan
로 변경되었습니다.
그러나 이 방법은 docker run
할 때마다 변경이 필요하므로 Dockerfile에서 권한 변경을 처리합니다.
Dockerfile을 다음과 같이 변경합니다.
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
# 権限変更
RUN chown -R jovyan data
이제 파일을 만들 수 있습니다.
결론
이번에는 권한을 다루었습니다. 최근 권한으로 비슷한 일을 했기 때문에 잘 대처할 수 있었습니다.
움직이지 않으면 우선 확인해 보는 것은 중요합니다.
참고 기사
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
# ユーザー変更
ENV GRANT_SUDO=no
USER jovya
RUN mkdir ./data
# upyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
$ docker exec -it [コンテナ名] sh
# sudo chown -R [変更するユーザー名] [変更するディレクトリorファイル]
$ sudo chown -R jovyan data
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
(省略)
password: (not_password ただし表示はされない)
FROM jupyter/datascience-notebook
# Setting jupyter notebook environment.
RUN rmdir work
ARG password=not_password
# install libraries
ENV GRANT_SUDO=yes
USER root
(途中省略)
RUN mkdir ./data
# jupyter config
COPY ./settings/jupyter_notebook_config.py .jupyter/
# 権限変更
RUN chown -R jovyan data
이번에는 권한을 다루었습니다. 최근 권한으로 비슷한 일을 했기 때문에 잘 대처할 수 있었습니다.
움직이지 않으면 우선 확인해 보는 것은 중요합니다.
참고 기사
Reference
이 문제에 관하여(JupyterNotebook에서 파일을 만들려고하면 permission denied가됩니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sicut_study/items/1369c30c50e32f6ee2c8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)