wsl2 설치 후 ubuntu 에 docker가 자동 실행이 안 된다
windows 자동 실행은 1번으로 하고, 좀 더 여러가지 상황은 대충 2번과 같다
1. windows 부팅시 실행 batch 파일
1) visudo 로 sudo 권한 부여
먼저 WSL 처음 설치시 지정한 기본 계정이 존재한다. 해당 계정을 visudo 로 root 비밀번호 없이 sudo 를 수행할 수 있는 권한을 부여한다.
# visudo
visudo 접속 후 맨 밑에다가 아래 항목을 추가한다.
계정명 ALL=(ALL:ALL) NOPASSWD:ALL
계정명 부분에다 기본 계정명을 입력하고, sudo 로 수행하는 모든 명령을 비밀번호 없이 수행한다는 것을 추가한 것이다.
저장할 떄는 Ctrl + X 누른 뒤, Y 로 넘어가고, 파일명을 .tmp 를 지운 /etc/sudoers 로 변경한다.
그럼 bash의 기본 계정으로 sudo 를 수행할 때 비밀번호가 필요없어진다.
2) Windows 배치 파일 생성
아래 처럼 bash의 서비스를 실행하는 Windows 배치 파일을 만들 수 있다.
C:\Windows\System32\bash.exe -c “sudo service ssh start”
C:\Windows\System32\bash.exe -c “sudo service mysql start”
Windows 부팅시 실행 할 서비스를 start 하는 명령어를 차례로 입력한 뒤 해당 파일을 service.bat 파일로 만든다.
그리고 %AppData%\Microsoft\Windows\Start Menu\Programs\Startup 디렉토리에 복사를 한다.
3) 재부팅시 서비스 시작
그럼 재부팅시에 해당 배치 파일이 실행되면서 서비스가 하나하나 실행된다.
2. powershell 에서 선택 실행 batch file
@ECHO OFF :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: wsl2 docker 자동실행 :: startup.bat :: windows 자동 실행 폴더 : %AppData%\Microsoft\Windows\Start Menu\Programs\Startup :: C:\Windows\System32\bash.exe -c "sudo service docker start" :: C:\Windows\System32\bash.exe -c "sudo docker start docker container2" :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: echo 1 : docker container1 echo 2 : docker container2 echo 3 : shutdown echo 4 : shutdown and wsl reboot (with docker start) @set /p c=뭐 할거여? if %c% == 1 ( wsl --shutdown Ubuntu-18.04 C:\Windows\System32\bash.exe -c "sudo mkdir /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo service docker start" C:\Windows\System32\bash.exe -c "sudo docker start docker container1" C:\Windows\System32\bash.exe -c "docker ps" wsl ) if %c% == 2 ( wsl --shutdown Ubuntu-18.04 C:\Windows\System32\bash.exe -c "sudo mkdir /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo service docker start" C:\Windows\System32\bash.exe -c "sudo docker start docker container2" wsl ) if %c% == 3 ( wsl --shutdown Ubuntu-18.04 ) if %c% == 4 ( wsl --shutdown Ubuntu-18.04 C:\Windows\System32\bash.exe -c "sudo mkdir /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd" C:\Windows\System32\bash.exe -c "sudo service docker start" C:\Windows\System32\bash.exe -c "docker ps" wsl )