wsl: modify readme

This commit is contained in:
Jaewook Lee
2024-08-20 06:08:30 +09:00
parent c331986a7a
commit fcd0ceeb5e

View File

@@ -6,17 +6,17 @@ Ref: https://learn.microsoft.com/ko-kr/windows/wsl/install
## 1. 새로운 Windows에 WSL을 설치하는 경우 ## 1. 새로운 Windows에 WSL을 설치하는 경우
Powershell (관리자로 실행) - Powershell (관리자로 실행):
```Powershell ```Powershell
wsl --install wsl --install
``` ```
## 2. WSL 리눅스 배포판 설치 ## 2. WSL 리눅스 배포판 설치
Powershell (관리자로 실행) - Powershell (관리자로 실행):
```Powershell ```Powershell
wsl --install -d Debian wsl --install -d Debian
``` ```
- 다른 배포판을 설치할 수도 있지만 Debian이 제일 근본이다. - 다른 배포판을 설치할 수도 있지만 Debian이 제일 근본이다.
@@ -29,62 +29,60 @@ https://apps.microsoft.com/detail/9n0dx20hk701?hl=en-US&gl=US
## 4. WSL에 docker 설치 ## 4. WSL에 docker 설치
- `docker daemon`을 실행하려면 `systemd`가 켜져있어야 한다. - `docker daemon`을 실행하려면 `systemd`가 켜져있어야 한다.
- 정상적인 linux는 이미 systemd가 실행되어 있지만 wsl에서는 기본적으로 꺼져있다. - 정상적인 linux는 이미 systemd가 실행되어 있지만 wsl에서는 기본적으로 꺼져있다.
Debian Bash - Debian Bash
```sh ```sh
echo -e "\n[boot]\nsystemd=true\n" | sudo tee -a /etc/wsl.conf echo -e "\n[boot]\nsystemd=true\n" | sudo tee -a /etc/wsl.conf
``` ```
Powershell (관리자로 실행) - Powershell (관리자로 실행):
```sh ```powershell
wsl --shutdown # 종료 wsl --shutdown # 종료
wsl # 재시작 wsl # 재시작
``` ```
Debian Bash - Debian Bash:
```sh ```sh
curl -fsSL https://get.docker.com | sudo sh curl -fsSL https://get.docker.com | sudo sh
sudo adduser $USER docker # sudo 없이 docker 실행 sudo adduser $USER docker # sudo 없이 docker 실행
su $USER # group 변경은 로그인해야 적용되므로 자신에게 다시 로그인 su $USER # group 변경은 로그인해야 적용되므로 자신에게 다시 로그인
docker run hello-world docker run hello-world
``` ```
성공 메시지: - 성공 메시지:
``` ```
Hello from Docker! Hello from Docker!
This message shows that your installation appears to be working correctly. ```
```
## 5. WSL background 실행 ## 5. WSL background 실행
WSL는 기본적으로 실행중인 터미널이 없으면 WSL 자체가 종료되도록 되어 있어서 서버를 굴릴수가 없다. WSL는 기본적으로 실행중인 터미널이 하나도 없으면 WSL 자체가 종료되도록 되어 있어서 서버를 굴릴수가 없다.
- https://www.autohotkey.com/ - https://www.autohotkey.com/
- AHK v1.1 (Deprecated) 설치 - AHK v1.1 (Deprecated) 설치
- Win+R > `shell:startup` : `시작프로그램` 폴더가 열린다. - Win+R > `shell:startup` : `시작프로그램` 폴더가 열린다.
- 메모장으로 아래의 `wsl.ahk` 파일을 생성하여 `시작프로그램` 폴더에 저장 - 메모장으로 아래의 `wsl.ahk` 파일을 생성하여 `시작프로그램` 폴더에 저장
``` ```ahk
Run, wsl.exe, , Hide Run, wsl.exe, , Hide
``` ```
- 이제 더블클릭해서 실행해보아도 아무것도 보이지 않지만 눈에 보이지 않는 터미널 하나가 실행되어, wsl이 꺼지지 않게 된다. - 이 `wsl.ahk` 파일을 더블클릭해서 실행해보아도 눈에 보이는 것은 없지만, 백그라운드 터미널 하나가 실행되어, wsl이 꺼지지 않게 된다.
- 컴퓨터를 재시작 할 경우에도 항상 하나가 켜져 있을 것이다. - 컴퓨터를 재시작 할 경우에도 항상 하나가 켜져 있을 것이다.
> 예외: 본인이 `wsl --shutdown`으로 강제 종료하면 눈에 안보이는 이것도 꺼지므로 그때는 저걸 다시 켜주어야 함) - 예외: 본인이 `wsl --shutdown`으로 강제 종료하면 눈에 안보이는 이것도 꺼지므로 그때는 저걸 다시 켜주어야 함)
# Docker에 NVIDIA 설치 # Docker에 NVIDIA 설치
WSL에서 nvidia-driver까지는 자동으로 깔아주므로 별다른 설정 없이 `nvidia-smi`를 사용할 수 있지만 docker container 내부에서 CUDA를 사용하기 위해서는 nvidia-container-toolkit을 설치해야 한다. - WSL에서 nvidia-driver까지는 기본으로 깔아주므로 별다른 설정 없이 Debian에서 `nvidia-smi`를 사용할 수 있지만,
- docker container 내부에서도 CUDA를 사용하기 위해서는 nvidia-container-toolkit를 추가로 설치해야 한다.
## 6. nvidia-container-toolkit 설치 ## 6. nvidia-container-toolkit 설치
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
의 부분의 명령어를 따라가면 되는데 아래와 같이 WSL Debian 기준으로는 아래와 같이 실행하면 된다. 위의 명령어를 따라가면 되는데 결과적으로 WSL Debian 기준 아래와 같이 실행하면 된다.
```sh ```sh
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker sudo systemctl restart docker
@@ -127,21 +125,21 @@ ssh-keygen # [Enter] 계속 눌러 ~/.ssh 폴더에 비밀키 생성
ssh localhost # 자기자신으로 접속된다. ssh localhost # 자기자신으로 접속된다.
ssh-copy-id localhost ssh-copy-id localhost # 자기자신에게 공개키를 복사한다.
ssh localhost # 자기자신으로 접속되는데 비밀번호가 필요하지 않게 된다. ssh localhost # 자기자신으로 접속되는데 비밀번호가 필요하지 않게 된다.
``` ```
```sh ```sh
cd ~ cd ~
mkdir -p .jupyter # 없으면 폴더를 만든다. mkdir -p .jupyter # 없으면 폴더를 만든다.
cd .jupyter cd ~/.jupyter
cat <<"EOF" >Dockerfile tee Dockerfile << 'EOF'
FROM alpine:latest FROM alpine:latest
RUN apk add --no-cache openssh-client RUN apk add --no-cache openssh-client
EOF EOF
cat <<"EOF" >docker-compose.yml tee docker-compose.yml << 'EOF'
services: services:
jupyter: jupyter:
build: . build: .
@@ -157,7 +155,7 @@ EOF
docker compose up -d # Jupyter 서버 시작 docker compose up -d # Jupyter 서버 시작
``` ```
1. `image: alpine`: 가벼운 Alpine Linux 이미지를 사용합니다. 1. `FROM alpine:latest`: 가벼운 Alpine Linux 이미지를 사용합니다.
2. `container_name: jupyter`: 컨테이너 이름을 'jupyter'로 지정합니다. 2. `container_name: jupyter`: 컨테이너 이름을 'jupyter'로 지정합니다.
@@ -184,8 +182,7 @@ docker compose up -d # Jupyter 서버 시작
- 컨테이너가 자동으로 재시작되어 안정성을 높입니다. - 컨테이너가 자동으로 재시작되어 안정성을 높입니다.
```sh ```sh
docker compose logs -f # 서버 상태 보기 & Ctrl+C로 나오기 docker compose logs # 서버 상태 보기
cd ~/.jupyter && docker compose down # 서버 종료 cd ~/.jupyter && docker compose down # 서버 종료
``` ```