wsl2 와 ubuntu 설치 후 docker 자동 실행

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
)

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다