Windows 환경의 WSL2와 Docker로 개발 환경 구축 메모 2020/06

자신을 위한 Windows에서의 개발 환경 구축 메모.
Windows 10 Home 대응.
어떠한 언어용의 구축을 하는 것은 아니지만, WSL2와 Docker를 준비하기 때문에, Linux와 Windows의 좋은 곳에서 대부분의 개발 환경 구축의 토대로서는 곤란하지 않다.

다른 컴퓨터에서 원래 사용하는 WSL 환경이 있으면 내보내기



PowerShell 사용자 모드
wsl --export Ubuntu ./Ubuntu.tar

우분투 부분은 디스트로 이름이므로 환경에 따라 다릅니다.
Distro 이름은 WSL 환경 목록에서 확인할 수 있습니다.

PowerShell 사용자 모드
wsl -l -v --all

Windows 10 2004 May 2020 업데이트 이상 제공


2020년 5월 말에 업데이트가 온 Windows 10에서 WSL2가 정식판이 되었으므로 그 이상으로 업데이트한다.
기본 Windows 업데이트를 걸면 좋지만 롤링 업데이트이므로 아직 오지 않았다면 여기에 액세스하여 업데이트 도구를 사용한다.

WSL2 사용


[2022/03 추가]
이하의 커멘드로 Windows의 시스템 설정등을 포함해 단번에 인스톨 할 수 있게 되어 있었습니다!
아래의 설치 가이드에도 제대로 절차 반영되어 있으므로 편하게 활성화할 수 있다고 생각합니다.
wsl --install
[2022/03 추기 끝]
Windows 10용 Windows Subsystem for Linux 설치 가이드 을 바탕으로 설치를 진행합니다.
wsl 버전을 올리기 전에 Linux 커널을 설치해야하므로,
여기의 순서로 다운로드해 인스톨 해 둔다.

우분투 설치


Microsoft Store에서 설치. Distro는 특별히 뭔가 요구 사항이 없다면 우분투를 선택.
2020/06 시점에서는 Ubuntu20.04가 들어간다.
인계할 환경이 있는 경우에는 내보낸 tar 파일을 ~/AppData/Local/Ubuntu로 확장하여 가져옵니다.

PowerShell 사용자 모드
mkdir ~/AppData/Local/Ubuntu
wsl --import Ubuntu ~/AppData/Local/Ubuntu ./Ubuntu.tar --version 2
~ 는 그대로는 인식하지 않으므로 TAB 키로 풀 패스로 변환한다.

Windows Terminal 설치


Microsoft Store에서 설치.
구성 파일의 JSON을 열고 defaultProfile를 Ubuntu GUID로 다시 씁니다.
"defaultProfile": "{<UbuntuのGUID>}"

ssh agent 설정


htps : // 기주 b. 코 m / 루포 루기 테 b / wsl - sh - 겐 t 을 도입해 WSL로부터도 Windows측의 ssh agent를 사용할 수 있도록 한다.
Usage에서 볼 수 있듯이 Windows의 OpenSSH Client Service를 시작합니다.

PowerShell 관리자 모드
Start-Service ssh-agent
Set-Service -StartupType Automatic ssh-agent

wsl-ssh-agent 릴리스 페이지 에서 최신 버전 다운로드
적절한 디렉토리에 배치한다.

Windows+R에서 shell:startup를 입력하여 시작 폴더를 엽니다.
방금 배치한 wsl-ssh-agent-gui.exe 바로 가기를 만들어 시작에 배치

바로 가기 속성을 열고 바로 가기 대상 옵션을 다음과 같이 지정합니다.
C:\wsl\wsl-ssh-agent\wsl-ssh-agent-gui.exe -setenv -envname=WSL_AUTH_SOCK
WSL측의 ~/.bashrc 등에 이하를 추기한다.
# 本来はこの設定で問題ないが、2020/06時点ではWSL2が AF_UNIX に対応していないため動作しない
# [ -n $WSL_AUTH_SOCK ] && export SSH_AUTH_SOCK=$WSL_AUTH_SOCK

# 上記の設定で動作するようになったら以下の回避策を消す
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
ss -a | grep -q $SSH_AUTH_SOCK
if [ $? -ne 0   ]; then
    rm -f $SSH_AUTH_SOCK
    ( setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/wsl/wsl-ssh-agent/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork & ) >/dev/null 2>&1
fi
WSL 측에서 keyfile을 생성하여 ssh-agent에 추가한다.

keyfile 생성 및 추가
ssh-keygen -t rsa -b 4096 -C "[email protected]"
chmod 400 ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa

Docker Desktop for Windows 설치


htps //w w. 도 c r. 코 m / p 로즈 cts / 도 c 케 r에서 sk와 p 에서 다운로드하여 설치.
Stable 채널에서 문제 없습니다.

VSCode 설치


htps : // 여기.ゔぃすあ lsつぢお。 코m/ 에서 설치.
WSL 환경과의 연계를 위해 Remote - WSL을 도입.
도입해 두면, WSL측으로부터 code 커멘드로 기동했을 때에 필요한 것을 자동으로 인스톨 해 준다.

메모리 고갈 문제에 대처


2020/06 시점에서는 WSL이 확보한 메모리가 해제되지 않고 Windows 측의 메모리가 고갈되는 문제이 있는 것 같기 때문에, WSL에서의 이용 메모리의 상한을 설정해 둔다.
해결 방법도 위의 링크에 설명되어 있으므로 해결해야합니다.

WSL측에 Windows측으로부터 localhost로 액세스 할 수 있도록 한다

%USERPROFILE%\.wslconfig 설정 파일에 다음 줄을 추가합니다.
localhostForwarding=True

좋은 웹페이지 즐겨찾기