Windows 10 환경에 wsl2 ubuntu
× vscode
× docker desktop
조합으로 개발 환경을 세팅해본다.
wsl 은 기본적으로는 VM 이지만 이 조합으로 구성하면 마치 네이티브 리눅스 환경에서 작업을 하고 있는 듯이 매끄럽게 조작할 수 있는데 특장점을 꼽아보자면,
- 윈도우 파일시스템이
/mnt/c
,/mnt/d
와 같이 unix 경로로 기본 마운트 돼 있어서 별도 통신없이 접근할 수 있고 - 호스트 윈도우의 docker 를 wsl 안에서 리눅스 명령어로 조작할 수 있고,
- 호스트 VSCode 에디터에서 wsl VM 안의 파일을 편집하고 실행할 수 있다.
개인적으로 Mac 보다는 윈도우 환경을 선호해서 회사에서 폐쇄망 장비로 쓰고있는 아이맥 사용 기한이 끝나면 윈도우 장비로 변경할 예정인데, 그때 설치할걸 미리 연습해볼 겸 개인 장비에서 네트워크 끊고 설치해봤다.
폐쇄망인 회사 네트워크 환경에 설치할 때를 기준으로 정리하긴 했지만 인터넷 환경이면 같은 절차로 더 쉽게 설치할 수 있다.
준비물
먼저 다음과 같은 설치파일들을 준비해서 사설 네트워크 안의 설치 대상 장비에 반입해둬야한다.
세부 버전은 시점에 따라 다르겠지만 다음 링크에서 다운받을 수 있다.
- Docker Desktop Installer.exe
- Ubuntu*.appx
- wsl_update_x64.msi
- VSCodeUserSetup-x64-*.exe
- ms-vscode-remote.remote-wsl-0.58.2.vsix
- 또는 VS Marketplace 에서 Download Extension 버튼으로 vsix 파일 다운로드
- vscode-server-linux-x64.tar.gz
- commit:c3f126316369cd610563c75b1b1725e0679adfb3 기준
Windows 기능 활성화
먼저 다음과 같이 Windows 기능 두 가지를 활성화 한다.
- Linux용 Windows 하위 시스템
- 가상 머신 플랫폼
Power Shell 에서 명령줄 기반으로 활성화할 수도 있다.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl ubuntu 설치
기능 활성화 후에 재부팅까지 했으면 이어서 ubuntu 를 설치할 수 있는데, 원래는 cmd 에서 appx 파일이 있는 경로에서 Add-AppxPackage .\Ubuntu*.appx
와 같은 명령어 한번으로 설치할 수 있어야하겠지만 이렇게 잘 안되는 경우가 있는 것 같다.
이럴때는 몇가지 잔기술을 좀 써야하는데 %USERPROFILE%
경로에 wsl 배포판들을 관리할 수 있는 경로를 별도로 생성해서 진행한다. (나는 다음과 같이 C:\Users\dong1lkim\wsl
경로를 새롭게 만들어서 진행했다.)
여기에다가 Ubuntu*.appx
파일을 옯겨놓고 파일 확장자를 *.zip
으로 변경한 다음
해당 zip 파일을 윈도우 기본 압축 폴더 도구로 풀면 문제없이 잘 풀리는데
위 ubuntu2004.exe
파일을 실행하면 본격적으로 설치가 시작되고
여기서부터는 MS Store 에서 ubuntu 를 설치하는 것과 같이 id, password 만 설정해주면 끝.
wsl2 업데이트
wsl 안에서 host 윈도우 머신의 도커를 제어하기 위해서는 wsl2 로 업그레이드 해줘야하는데 이 자체는 wsl_update_x64.msi
파일을 더블클릭해서 다음 버튼만 계속 눌러주면 끝난다.
이어서, 앞서 wsl1 버전 커널로 설치된 우분투를 wsl2 를 사용하는 것으로 변경해주기 위해 cmd 에서 다음과 같은 명령어룰 수행해준다.
wsl --set-version Ubuntu-20.04 2
다른 배포판을 이용하거나 버전이 다른 경우 wsl -l
명령으로 설치된 버전을 확인할 수 있다.
다음과 같은 명령어를 수행해서 앞으로 추가 배포판을 설치하는 경우 wsl2 를 기본으로 설정하도록 할 수도 있다.
wsl --set-default-version 2
Docker Desktop 설치
도커도 그냥 인스톨러를 실행하고 WSL2 구성요소만 선택해준 뒤, 다음 버튼만 계속 눌러주면 된다.
설치 완료 후 Docker Desktop 이 실행된 상태에서 wsl 에서 docker 명령을 수행해보자. 다음과 같이 정상적으로 동작하면 제대로 설치된 것.
VSCode × Remote WSL Ext 설치
VSCode 이것도 설치 자체는 인스톨러 실행해서 다음 버튼만 계속 눌러줄 것.
그 다음 Remote WSL 확장 설치가 중요한데 확장 탭에서 위와 같이 Install from VSIX...
기능을 이용해 미리 다운받아놓은 *.vsix
파일을 이용해서 확장을 설치해주고 다시 wsl 로 넘어간다.
확장 설치가 제대로 됐다면 다음과 같이 $PATH
에 VS Code 경로가 등록돼 있어야 한다.
code .
명령을 수행해보면 다음과 같이 Failed
처리될텐데 이때 표시되는 링크에서 vscode-server
버전을 받아서 설치하면 베스트이겠지만 앞서 미리 준비한 버전(내가 설치했던 시점의 최선버전)을 설치해도 상관은 없다.
미리 준비한 버전의 서버를 설치하는 경우 다음 명령어를 그대로 수행해서 디렉토리를 생성하고 바이너리를 풀어주기만 하면 된다.
cd $HOME
tar -xvzf /mnt/c/Users/dong1lkim/Downloads/vscode-server-linux-x64.tar.gz -C ~/.vscode-server/bin/c3f126316369cd610563c75b1b1725e0679adfb3 --strip 1
touch ~/.vscode-server/bin/c3f126316369cd610563c75b1b1725e0679adfb3/0
혹시 표시되는 메시지에 따라 최신버전을 설치하는 경우 c3f126316369cd610563c75b1b1725e0679adfb3
해시코드를 적절하게 변경해주면 되겠다.
이제 설치는 끝났고 대충 프로젝트 폴더에 텍스트 파일 하나 만들어놓고 code
를 실행해보면
다음과 같이 윈도우 인터페이스로 VSCode 가 실행되는데 WSL 안의 트리가 보여지고
Integrated Terminal 에서 bash가 열리는 것은 물론, wsl 안의 명령어들이 정상적으로 동작하는 것도 확인할 수 있다.
끝.