프로그래밍과 잡담

[도커] 윈도우10 WSL 에서 도커 사용하기. 본문

프로그램 사용법

[도커] 윈도우10 WSL 에서 도커 사용하기.

크레온 2026. 2. 3. 12:32

도커란? 

 

ChatGPT에서 물어보면 아래와 같이 나온다.

 

애플리케이션을 운영체제와 독립적으로 실행할 있도록 해주는 ‘컨테이너 기술’ 기반의 오픈소스 플랫폼으로, 개발·배포·운영 환경을 표준화해주는 도구

 

실제로도 그렇게 동작하는 기능이다.

 

원래는 리눅스쪽에서 사용하는 기술인데,  예전부터 엄청 뜨고 있는 기술이고, 지금도 많이 쓰고 있지. 

 

셋팅까지 한방에 처리 할 수 있는 간편한 도구다 보니까 많이 쓰인다.

 

뭐 그게 중요한게 아니고,  문제는 리눅스가 아니라 윈도우에서 사용 할 때  상당히 까다롭다는 거지.

 

그냥 개발용으로는 문제 없음.  내가 말하고 하는 건, 서버 처럼 계속 켜 놓고 쓰는 경우가 문제가 될 수 있음.

 

윈도우가 병신인건지.. 이상하게  컴퓨터가 재시작이 되는 경우가 생기는데,  기본적으로는 윈도우는  WSL을 자동으로 시작을 안한다. 그러니 작업스케줄러를 통해서 WSL을 실행 해 줘야 한다.  나 같은 경우에는 계속 삽질을 했음. 

스케줄러에 넣었는데도 이상하게 wsl 이 실행이 안되고  이상한 현상들이 있었음. 뭔가 셋팅을 잘못한거 겠지..

 

사용방법은 아래 처럼 하면 됨.

 

1. wsl 설치

2. 리눅스 설치

  2.1 wsl 접속 해서 도커 설치  (여기 까지는 그냥 gpt 한테 물어보는게 더 편함)

3. 작업 스케줄러 설정

 

3.1.  이름 넣고 다음 누르면 트리거를 선택하게 되는데,   "컴퓨터 시작 시" 를 선택한다.

3.2. 작업에서는 프로그램 시작을 선택한다.

3.3. 아래의 스크린샷 처럼 처리 하면 됨.

프로그램 스크립트는 아래의 경로를 넣고

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

 

인수 추가 쪽에 본인의 파워쉘 스크립트를 넣는다.  나같은 경우에는 그냥 파워쉘을 썼음.  

일반 윈도우 배치 스크립트로 하기에는 좀 불편해서.  

나 같은 경우에는 시작 시 로깅 처리하고 wsl 실행 후에 포트포워드 설정하는거도 같이 실행을 하다 보니 그렇슴.

 

일단은 위와 같이 하고 나서 다음 다음 해서 저장을 한다.

 

그리고 나서 작업 스케줄러 라이브러리 를 누르면 거기에 내가 만든 작업이 보인다. 그걸 더블 클릭을 하면 

 

아래와 같이 창이 뜬다.

 

 

위와 같이 체크를 한다. 그래야만 컴퓨터가 시작 시 wsl 을 실행을 하게 된다.

 

이거 말고 하나 더 해야 하는데 윈도우를 자동 로그인을 해야한다.   뭐 아마 위의 셋팅 대로라면 저 스크립트가 실행 되야 하겠지만

 

혹시 모르니 자동 로그인 처리를 하는게 좋다.

 

일단 난 그렇게 했음.

 

윈도우10에서는 자동 로그인 방법은 쉬움.

 

실행 창(윈도우키 + R) 에서 netplwiz 라고 치면 됨.

 

윈도우 10하고 11하고는 좀 다르네. 빌어먹을 마소 새끼들

 

윈도우 10은 "사용자 이름과 암호를 입력해야 이 컴퓨터를 사용 할 수 있음" 이라는 체크 박스를 해제하면 된다.

 

윈도우 11은 좀 귀찮아서 그냥 1분이면 OK! 윈도우 11 자동 로그인 설정.. : 네이버블로그  . 이 사람 꺼 보고 하면 될듯..

자동 로그인이 주제가 아니라 넘어감.

 

이렇게 하고 컴퓨터 재시작을 하면 wsl이 실행 될거다.. 

 

잘 됬는지 여부는 docker 설치 한 다음에 아무거나 nginx 같은 서버 하나 올려 놓고 

 

포트포워딩 방법은 아래 처럼 하면 됨.

 

이거 관련해서는 구글 검색을 하던가 gpt 한테 물어봐라. 

 

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=80 connectaddress=172.28.x.x

 

간단하게는 listenport=8080 가 외부에서 접속할 포트고 connectport=80은 wsl 내부 포트임 

 

포트포워드 설정 해 주고  서버 ip:포트로 해서 접근 했을 때 잘 되면 된거임. 

 

 

 

번외로 잡설 하지면  이렇게 하는 이유는 윈도우용 도커 프로그램이  docker desktop 이라는게 있는데, GUI 화면이 표시되니까 관리 시  간편하게 할 수 있는데, 이 프로그램은  순전히 개발용인거 같음.

 

서버로 쓰기에는 큰 문제점이 있음.  모니터가 있으면 상관 없겠지만,  모니터가 없는 경우가 가장 큰 문제다. 

모니터가 없으면 위에서 한거 처럼 자동 로그인을 해봐야 gui 프로그램이 동작을 안함. 

 

즉, docker desktop 프로그램이 실행이 안된다는 소리다.

그렇다는건 도커가 안돌가니까 내가 올린 컨테이너가 안 돌아감.

 

결국 wsl 용 리눅스 내부에서 도커를 설치 해야함. 

wsl은 모니터가 없어도 위에 한거 처럼 작업 스케줄러로 실행 하면 실행이 된다. 내가 지금 그렇게 쓰고 있고.

 

물론 이 방법도 문제가 없는건 아님. 

 

wsl의 docker 컨테이너는 외부에서 접근이 불가능함. 그러니 서버용 컴퓨터 ip를 통해 포트포워딩이라는걸 해줘야 접근이 가능함.

 

대략 구조는 이렇슴.

 

외부 접속자 => 서버IP or 도메인주소:포트 => WSL 리눅스 IP:포트

 

위의 처럼 외부접속자는 서버의 특정 포트를 통해서 wsl로 접근하는거임. 

 

 

나도 이 지랄을 하고 싶진 않았는데 정전이나 이런걸로 서버가 껏다 켜지면서  도커가 안 켜져서  서버프로그램들이 안돌아가는 불상사가 발생하는걸 봐서 이렇게 변경함. 

 

docker desktop  프로그램 가지고 해볼려고 별에 별 쇼를 다 했는데,  안되더라구.  무조건 RDP로 접속 해야 프로그램이 그때 돌아가는걸 보고,  답이 없다는걸 깨닳음

 

가장 좋은건 윈도우를 리눅스로 밀어버리는게 가장 편한데, 기존의 있던 ntfs용 파일들을 다 백업 받아야 하는데, 백업용 하드가 없음 ㅋ 그러니 엿같은 윈도우로 쓰는거지.

 

 

반응형
Comments