windows에 wsl 설치하고 설정하기
일반적으로 windows OS에서 linux 환경을 사용하기 위해서는 vmware를 이용해 OS를 설치하고 활용했다. 장단점이 있지만, 기본적으로 OS 설치 비용 + 디스크, 메모리 등을 쉐어 하기 때문에 호스트 OS에도 부담이 되는 방식이다.
2년전쯤 WSL을 설치하려고 시도하다가 업데이트가 잘 안되서 실패 했었다.
요즘은 쉽게 설치가 된다고 하여 다시 재도전을 해보았다.
제어판에서 Linux용 Windows 하위 시스템 사용 설정
- 제어판을 연다.
- 프로그램을 선택한다.
- Windows 기능 켜기/끄기 선택
- Linux용 Windows 하위 시스템 켜기
- 재부팅 한다.
Ubuntu 18.04 설치
- Microsoft Store에서 Linux를 검색한다.
- Ubuntu 18.04 LTS를 선택한다.
처음에 Ubuntu를 설치했더니, apt update 부터 오류가 발생했다.
설치가 끝나면 실행을 한다.
실행을 하면 사용자 ID와 Password를 입력하면 된다.
nvm 설치 하기
현재(2020.01.26)기준 최신 버젼은 0.35.2이다. 다음 명령어를 이용해서 설치 한다.
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13527 100 13527 0 0 13888 0 --:--:-- --:--:-- --:--:-- 13873
=> Downloading nvm from git to '/home/lahuman/.nvm'
=> Cloning into '/home/lahuman/.nvm'...
remote: Enumerating objects: 288, done.
remote: Counting objects: 100% (288/288), done.
remote: Compressing objects: 100% (258/258), done.
remote: Total 288 (delta 35), reused 95 (delta 18), pack-reused 0
Receiving objects: 100% (288/288), 146.70 KiB | 408.00 KiB/s, done.
Resolving deltas: 100% (35/35), done.
=> Compressing and cleaning up git repository
=> Appending nvm source string to /home/lahuman/.bashrc
=> Appending bash_completion source string to /home/lahuman/.bashrc
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
설치가 끝나면 마지막 3줄을 복사해서 붙이면 설치는 마무리 된다.
$ export NVM_DIR="$HOME/.nvm"
$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
$ [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm list명령어를 이용해서 현재 설치된 것을 확인하면, 다음과 같이 아무것도 설치 되어 있지 않다는 것을 확인 할 수 있다.
$ nvm list
N/A
iojs -> N/A (default)
node -> stable (-> N/A) (default)
unstable -> N/A (default)
nvm install node 명령어를 이용해서 node를 설치 할 수 있다.
$ nvm install node
Downloading and installing node v13.7.0...
Downloading https://nodejs.org/dist/v13.7.0/node-v13.7.0-linux-x64.tar.xz...
################################################################################################################# 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v13.7.0 (npm v6.13.6)
Creating default alias: default -> node (-> v13.7.0)
$ node -v
v13.7.0
$ npm -v
6.13.6
설치 버젼을 확인하여, 설치가 잘된 것을 확인한다.
docker 설치 하기
기본적으로 WSL은 docker 데몬을 지원 하지 않는다.
하지만! WSL2 라면 지원을 한다.
WSL2설치
WSL2란, 최신의 가상화 기술을 사용하여 경량 유틸리티 VM(가상 머신) 내에서 Linux 커널을 실행합니다. 기존 VM과 다르게, WSL1과 동일한 사용자 환경을 유지 하면서 백그라운드에서 관리되고 실행됩니다.
우선 Hyper-v를 사용하도록 설정 해야 한다.
- BIOS 설정
- Hyper-V 설정
- wsl2 설치
WSL 2는 Windows 10 빌드 18917 이상에서만 사용할 수 있음 Windows 참가자 프로그램을 참가하여야 합니다.
이후 업데이트(인터넷 속도에 따라 2시간 정도 걸림)를 모두 하면, 빌드 버젼이 2020.01.27기준 10.0.19041.21이다. 버전을 확인하는 방법은 cmd 명령창에서 ver 명령어로 확인이 가능합니다.
# ver
Microsoft Windows [Version 10.0.19041.21]
이후 가상 컴퓨터 플랫폼을 사용하도록 powserShell에서 다음 명령어를 입력한다. 주의 할것은 powserShell을 관리자 권한으로 실행해야 한다.
# dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2020년 5월 20일 추가 사항 WSL2로 변환하기 위해서 다음주소에서 실행파일을 받아서 설치해야 한다.
이후 powserShell에서 wsl의 배포판 모드를 변경한다.
# wsl --set-version <Distro> 2
이제 docker를 사용할 준비가 완료 되었습니다.
docker 설치
docker container를 설치해보자, 설치는 다음의 명령어를 이용해서 할 수 있다.
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce
설치가 완료 되었으면, docker service를 root 권한으로 실행하여야 한다.
$ sudo service docker start
* Starting Docker: docker [ OK ]
기본적으로 docker는 root 권한으로만 실행할 수 있다. docker 명령어를 이용할 때마다, sudo를 붙이는게 귀찮다면, 다음과 같이 사용자를 docker그룹에 추가하면 된다.
$ sudo usermod -aG docker $(whoami)
# 터미널 종료후 다시 열어야 한다.
$ exit
샘플 docker 실행 테스트
$ docker run -d --name react-app -p 80:80 lahuman/test-react-app
Unable to find image 'lahuman/test-react-app:latest' locally
latest: Pulling from lahuman/test-react-app
e7c96db7181b: Pull complete
8985e402e050: Pull complete
41c1b09855ea: Pull complete
Digest: sha256:bb4d447b8a51845510671f731d68a4b944e681fe856bef670102bb97f904895d
Status: Downloaded newer image for lahuman/test-react-app:latest
5e0cd323d4c97682e4ecb3103555ff9c9ff9d10ffd2bc30fe9591a8b8157fad1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e0cd323d4c9 lahuman/test-react-app "nginx -g 'daemon of…" 5 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp react-app
VSCODE 와 연동 하기
vscode에서 Remote-WSL plugin을 설치 한다.
이후 F1을 눌러 Remote-WSL: new Windows를 입력 후 클릭한다.
새창이 뜨고, 뜬 새창에서 터미널이나, 파일 exporler를 열면 wsl 안의 내용을 확인 가능하다.
ubuntu 삭제 하기
설치된 wsl의 OS를 삭제하기 위해서는 앱 및 기능으로 이동해서 ms store에서 설치했던, Ubuntu를 찾아서 제거 하면 된다.