diff --git a/wsl-docker/README.md b/wsl-docker/README.md index d844b24..ddba02c 100644 --- a/wsl-docker/README.md +++ b/wsl-docker/README.md @@ -154,18 +154,49 @@ cd .jupyter cat <<"EOF" > docker-compose.yml services: jupyter: - image: linuxserver/openssh-server + image: alpine container_name: jupyter restart: unless-stopped stop_grace_period: 0s network_mode: host volumes: - $HOME/.ssh:/root/.ssh - entrypoint: ssh $USER@localhost '~/.venv/bin/jupyter lab --IdentityProvider.token=""' + entrypoint: sh -c + command: + - | + apk add openssh-client + ssh $USER@localhost '~/.venv/bin/jupyter lab --IdentityProvider.token=""' EOF + docker compose up -d # Jupyter 서버 시작 ``` +1. `image: alpine`: 가벼운 Alpine Linux 이미지를 사용합니다. + +2. `container_name: jupyter`: 컨테이너 이름을 'jupyter'로 지정합니다. + +3. `restart: unless-stopped`: 컨테이너가 중지되지 않는 한 항상 재시작합니다. + +4. `stop_grace_period: 0s`: 컨테이너 중지 시 즉시 종료합니다. + +5. `network_mode: host`: 호스트의 네트워크를 직접 사용합니다. + +6. `volumes: - $HOME/.ssh:/root/.ssh`: SSH 키를 컨테이너와 공유합니다. + +7. `entrypoint: sh -c`: 쉘 명령을 실행할 수 있게 합니다. + +8. `command:`: + + - `apk add openssh-client`: SSH 클라이언트를 설치합니다. + - `ssh $USER@localhost '~/.venv/bin/jupyter lab --IdentityProvider.token=""`': SSH를 통해 Jupyter Lab을 실행합니다. + +이 설정은 다음과 같은 이점이 있습니다: + +- Alpine 이미지를 사용하여 가볍습니다. +- SSH 키를 호스트와 공유하여 인증 문제를 해결합니다. +- 호스트 네트워크를 사용하여 localhost 접근이 가능합니다. +- 컨테이너가 자동으로 재시작되어 안정성을 높입니다. + ```sh docker compose logs -f # 서버 상태 보기 & Ctrl+C로 나오기 @@ -173,3 +204,4 @@ cd ~/.jupyter && docker compose down # 서버 종료 ``` - 만약 `6. WSL background 실행`과 `9. Windows 재부팅시 Jupyter Lab 자동시작` 모두 정확히 설정되었다면 윈도우를 재부팅하고 바로 localhost:8888에 접속할 수 있게 된다. +