Docker WSL needs updating
도커 데스크탑에 windows 에 설치된 WSL 버전이 너무 오래되어서 Docker가 작동하지 않는 상태라고 메세지가 뜬다. 그래서 Docker 엔진도 멈춰 있고(왼쪽 아래 Engine stopped), Ubuntu랑 통합도 제대로 작동하지 못하는 상황이다.
시작 메뉴 → PowerShell 검색 → 오른쪽 클릭 → 관리자 권한으로 실행
WSL의 커널(kernel) 을 최신 버전으로 업데이트해준다.
wsl --update
똑같은 에러..
wsl2 커널 업데이트가 누락되는 것 같다.
wsl 이 꼬여 있나 싶어서 완전히 제거하고 다시 설치하기로 했다.
docker 용 가상 wsl 리소스 삭제하는거다.
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
그 다음 다시 설치
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
설치 후 다시 명령어 확인
wsl --update
커널 문제보다 WSL 실행 파일(wsl.exe) 자체가 구버전이라 그런가 그냥 wsl 을 최신 버전으로 수동 재설치를 해주겠다.
.msixbundle
최신 버전 다운로드) 예) WSL_2.6.0.0_x64_ARM64.msixbundle관리자 권한으로 PowerShell 실행해서 파일 설치 명령어 입력
Add-AppxPackage .\wsl-2.6.0.0_x64_ARM64.msixbundle
이미 받은 Ubuntu2204-221101.AppxBundle 파일을 7-Zip 압축 프로그램으로 열면 안에 여러 .appx 파일이 들어있는데 Ubuntu_2204_XXXX_x64.appx 파일을 찾는다. 이 .appx 파일을 다른 폴더로 끌어내준다.
예) C:\Users\사용자\Downloads\UbuntuUnpack 등으로 풀기
추출한 .appx 파일을 다시 7-Zip 으로 열면 안에
install.tar.gz (구버전) 혹은 ext4.vhdx (신버전) 같은 루트 파일이 있다. 이 파일을 적당한 다른폴더로 꺼내둔다.
예) D:\WSL\Ubuntu\install.tar.gz 위치에 저장.
관리자 권한으로 PowerShell 실행해서
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu\install.tar.gz --version 2
wsl --list --verbose
Ubuntu 가 Version 2로 뜨면 성공!
wsl -d Ubuntu
이제 사용자 계정과 비밀번호를 설정하면 된다.
wsl Ubuntu 터미널에서 입력
adduser 사용자이름
비밀번호와 사용자 정보 입력하라는 메시지가 나오는데 비밀번호는 꼭 입력하고 추가 사용자 정보(Full Name, Room Number 등) 그냥 ENTER 눌러서 건너 뛰어도 된다. 마지막에 "Is the information correct? [Y/N]" 물으면 Y 입력하면 완료!
root 권한이 있는 상태에서
usermod -aG sudo 사용자이름
wsl 기본 계정을 새로 만든 계정으로 바꿔준다.
nano /etc/wsl.conf
들어가서 아래 내용을 추가해준다.
[user]
default=사용자이름
저장 후 닫기 (nano는 Ctrl+O → Enter → Ctrl+X)
powershell 새 창 열어서
wsl --shutdown
그리고 다시
wsl -d Ubuntu
새로 만든 계정으로 로그인이 된다.
whoami
새로 만든 계정 이름이 나오면 성공!
docker 명령어를 확인해보면 버전 정보가 잘 나온다.
여기까지 되면
이제 docker-compose 도 바로 사용 가능
IntelliJ 에서도 도커 연결해서 DB 컨테이너 띄울 수 있음