docker 컨테이너로 호스트 브라우저에서 사용할 수 있도록 Jupter notebook을 시작합니다.
또 사적인 환경을 사용하려고 했지만 안전 설정을 고려하지 않았다.
1. docker-compose용 파일 만들기
docker-commose를 시작하는 것을 전제로 하기 때문에 Docker file과 Docker-compose를 시작합니다.순서대로 제작하다.
1.1 Dockerfile
FROM python:3.9
WORKDIR /app
SHELL ["/bin/bash", "-c"]
RUN apt-get update &
RUN pip install --upgrade pip
RUN pip install notebook
1.2 docker-compose.yml
컨테이너에서 호스트로port를 전달하는 데 필요한 곳
ports:
.이번에는 주퍼 노트북이 기본적으로 사용하는 포트 8888을 컨테이너 및 호스트에서 사용하도록 설정했습니다.
version: '3'
services:
app:
build: .
volumes:
- ./:/app
ports:
- 8888:8888
tty: true
2. 컨테이너에 들어가서 jupter notebook 시동
2.1 컨테이너 시작
우선 컨테이너 시동이 걸린다.
$ docker-compose up -d
시동 확인.$ docker-compose ps
State가 Up
라면 OK.여기서도 포트의 설정을 확인할 수 있습니다. Name Command State Ports
----------------------------------------------------------
jnotebook- python3 Up 0.0.0.0:8888->8888
docker_app_1 /tcp,:::8888->8888
/tcp
2. 컨테이너에 들어가서 jupter notebook 시동
컨테이너에 들어가다.
$ docker-comose exec app bash
다음 명령을 사용하여 jupter notebook을 시작합니다.root# jupyter notebook --port=8888 --ip=0.0.0.0 --allow-root --NotebookApp.token=''
옵션이란--port=8888
8888 포트 활용--ip=0.0.0.0
외부로부터의 액세스를 허용합니다.호스트에서 액세스할 수 있도록 설정합니다.--allow-root
루트에서 시작할 수 있습니다.docker 용기의 사용자 권한은 기본적으로 root
사용자이기 때문입니다.--NotebookApp.token=''
브라우저에 접근할 때의 영패 입력을 비활성화합니다.실행된 터미널은 다음과 같습니다.
root@875788d8dc37:/app# jupyter notebook --port=8888 --ip=0.0.0.0 --allow-root --NotebookApp.token=''
[I 05:42:04.018 NotebookApp] Authentication of /metrics is OFF, since other authentication is disabled.
[W 05:42:04.158 NotebookApp] All authentication is disabled. Anyone who can connect to this server will be able to run code.
[I 05:42:04.163 NotebookApp] Serving notebooks from local directory: /app
[I 05:42:04.163 NotebookApp] Jupyter Notebook 6.4.8 is running at:
[I 05:42:04.163 NotebookApp] http://875788d8dc37:8888/
[I 05:42:04.163 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 05:42:04.165 NotebookApp] No web browser found: could not locate runnable browser.
또 용기에서 연결이 가능한지 확인할 때curl
명령을 사용해 확인할 수 있다.$ curl -L localhost:8888
를 시작하면 다음과 같이 표시됩니다.<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
실패할 경우 다음과 같습니다.curl: (7) Failed to connect to localhost port 8888: 接続を拒否されました
3. 호스트에서 브라우저 연결
브라우저
http://localhost:8888
연결을 열고 notebook의 페이지를 표시하면 됩니다!!4.sh 파일을 통해 notebook 실행
시작할 때 매번 옵션을 지정하는 것은 번거롭기 때문에sh 파일부터 실행합니다.
root# jupyter notebook --port=8888 --ip=0.0.0.0 --allow-root --NotebookApp.token=''
실행 시.(권한이 없으면 실행할 수 없을 때 용기 밖
chmod 755 jn.sh
.# ./jn.sh
jupyter notebook --generate-config
에서도 파일을 선택할 수 있지만 파일의 위치는 사용자 디렉터리에 있기 때문에 이번에sh파일을 사용했습니다.
Reference
이 문제에 관하여(docker 컨테이너로 호스트 브라우저에서 사용할 수 있도록 Jupter notebook을 시작합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ushknn/articles/19e9aa500cb1e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)