* OS: Windows 11 Pro (이지만, 자택에서 해보니 그냥 Windows 11 에서도 무방)
* WSL: v2.6.3.0
* containerd.io: v2.2.1-1
* docker-buildx-plugin: v0.30.1-1
* docker-ce: v29.1.3-1
* docker-ce-cli: v29.1.3-1
* docker-compose-plugin: v5.0.0-1
1. 서론
회사에서 폐쇄망 운영 환경의 SI 사업에 투입됐다. 운영 환경에서 총 4대의 서버 (Windows 11 Pro OS 1대, Rocky Linux 9.5 3대) 가 투입 되었고 각 서버에 필자가 개발한 소프트웨어를 프로세스로 띄워야 하는 상황이였다. 특히 Windows 11 에는 DB서버와 RabbitMQ 서버, 모니터링 웹서버를 띄워야 했다.
단순히 web(Thymeleaf) 하나만 띄운다고 한다면 jdk 설치 파일과 jar 빌드 파일만 갖고 가면 되지만, 여러 설치 파일을 설치해야만 했고 그 과정에서 의존성 충돌이 많이 일어날 것 같아 Docker 가 필수라고 생각했다. 회사 선배들에게 물어보니, Linux 폐쇄망 환경에서의 Docker 설치 경험은 있으나 Windows 11 환경에서 Docker 를 사용해본 경험은 없다고 했다.. 그래서 '내가 한번 해봐?' 라는 생각으로 여러 시행착오 끝에 나만의 매뉴얼을 만들었다. 이에 대해 기술한 내용이다.
2. 본론
기본적으로 windows 에 docker engine 을 직접 구동하는 것은 불가능하다. 이러한 이유로 microsoft 는 wsl(windows subsystem for linux) 를 적극 권장한다.
다음은 wsl 을 구성하는 방법이다.
2.1. 리눅스 서브 시스템 활성화
꼭 cmd 관리자 모드로 실행해야 한다.

Microsoft WSL 2 공식문서에 따르면 WSL2를 설치하기 전에 `Linux용 Windows 하위 시스템`, `Virtual Machine Platform` 선택적 기능을 사용하도록 설정해야 한다.
이전 버전의 WSL에 대한 수동 설치 단계
wsl install 명령을 사용하는 대신 이전 버전의 Windows에 WSL을 수동으로 설치하는 단계별 지침입니다.
learn.microsoft.com
다음 명령어를 통해 활성화 해준다.
# 윈도우 서브시스템 활성화
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 가상머신 플랫폼 활성화
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

이후 변경사항을 적용하기 위해 꼭 재부팅이 필요하다.
2.2. WSL 2 설치
이전 windows 10 까지는 wsl_update_x64.msi legecy 를 설치하여 wsl 을 수동으로 설치할 수 있었으나, 최신 Windows 11 설정과 충돌이 나서 이런 문구가 뜰것이다.
`계속하려면 Linux용 Windows 하위 시스템 최신 버전으로 업데이트해야 합니다. 'wsl.exe --update'를 실행하여 업데이트할 수 있습니다. 자세한 내용은 https://aka.ms/wslinstall 참조하세요. Linux용 Windows 하위 시스템 설치하려면 아무 키나 누르세요. CTRL-C 누르거나 이 창을 닫아 취소하세요. 이 프롬프트는 60초 후 시간이 초과됩니다. 서버 이름이나 주소를 확인할 수 없습니다.`
이러한 문제를 해결하기 위해 microsoft 에서 최신 wsl 엔진 패키지를 배포하였다.
온라인 환경에서 아래 microsoft 공식 github 에서 wsl 설치 msixbundle 을 다운로드 한다.
https://github.com/microsoft/WSL
GitHub - microsoft/WSL: Windows Subsystem for Linux
Windows Subsystem for Linux. Contribute to microsoft/WSL development by creating an account on GitHub.
github.com


물론 wsl 빌드 파일을 포함하여 모든 설치 파일은 폐쇄망 환경에 cd나 usb 로 가져간다는 전제다.
이후 `powershell` 에서 wsl 설치 명령어를 호출한다.
Add-AppxPackage -Path "{msixbundle 실제 경로}"


`wsl -v` 하여 버전을 찍어봤을 때 정상적으로 출력되어야 한다.
2.3. Ubuntu 배포판 설치
온라인 환경에선 microsoft store 를 이용하면 되나, 오프라인 환경에서 설치하기 위해선 AppBundle 파일이 필요하다.
온라인 환경에서 microsoft 공식 wsl 문서에서 Ubuntu 22.04LTS 버전 다운로드 한다.
https://learn.microsoft.com/ko-kr/windows/wsl/install-manual#downloading-distributions
이전 버전의 WSL에 대한 수동 설치 단계
wsl install 명령을 사용하는 대신 이전 버전의 Windows에 WSL을 수동으로 설치하는 단계별 지침입니다.
learn.microsoft.com

이 `.AppxBundle` 을 `zip` 확장자로 변경하고 압축을 풀어야 한다.

압축을 푼 이후 해당 디렉토리에 들어가 `Ubuntu_2204.1.7.0_x64.appx` 를 다시 `zip` 확장자로 변경하여 압축을 풀어야 한다.

압축이 풀린 디렉토리에 들어가보면 `install.tar.gz` 파일이 있다. 이 압축 파일을 통해 Ubuntu 를 설치할 수 있다.

cmd 에서 install.tar.gz import 하는 명령어를 호출한다.
wsl --import Ubuntu-22.04 C:\WSL\Ubuntu2204 "{실제 install.tar.gz 경로}"

이후 정상적으로 설치 됐는지 확인한다.
# 설치된 wsl 버전 확인
wsl -l -v

이제 설치된 wsl (Ubuntu 환경) 에 Docker 를 설치하면 된다.
2.4. Docker engine 설치 및 구동
`docker desktop` 이 기업 라이센스가 생겨 1년에 1,000만달러 이상의 이익이 발생하는 경우 사용료를 지불해야 한다. 이러한 이유로 `docker engine` 설치 파일을 다운 받아 구동시켜야 한다. 필자의 경우 `docker desktop` 을 설치하면 안되는 상황이였다.
만약 자택이나 기업 라이센스에 걸리지 않을 경우 그냥 `docker desktop` 만 설치하면 매우 과정이 쉬워지니 이후 과정을 보지 않아도 된다.
docker 공식 문서에 따르면
https://docs.docker.com/engine/install/ubuntu/#install-from-a-package
Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com
- containerd.io__.deb
- docker-ce__.deb
- docker-ce-cli__.deb
- docker-buildx-plugin__.deb
- docker-compose-plugin__.deb
상기 5개의 파일을 https://download.docker.com/linux/ubuntu/dists/ 에서 다운받으면 된다고 한다.
Index of linux/ubuntu/dists/
download.docker.com
OS 별 이후 경로가 다르다. Ubuntu 의 경우 `/jammy/poll/stable/amd64/` 이다. 때문에 Docker engine 설치 공식문서에서 OS 별 경로를 잘 확인해야 한다.
이때 주의할 점은 레거시 버전도 존재하는데 버전을 어느정도는 맞춰서 설치해야 의존성 충돌이 발생하지 않는다. 필자의 경우 각 파일별 가장 최신 버전으로 맞춰 다운받았다.


이후 .deb 파일들이 있는 디렉토리 경로에서 cmd 를 열고 wsl 쉘을 열어 다음 명령어로 설치한다.
sudo dpkg -i *.deb
이후 docker 명령어를 실행해보면
`failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory` 라고 뜰 것이다.
이는 Docker engine 을 구동시키지 않았기 때문이다.
docker engine 을 구동하기 전, `systemctl` 에 등록하여 wsl 부팅시 자동으로 docker engine 이 켜지게끔 설정해야 한다.
`systemctl` 을 등록하려면 `systemd` 가 켜져있어야 하는데 wsl 은 켜져있지 않아 부팅시 켜져있게끔 설정해야 한다.
wsl 부팅시 설정을 하려면 wsl.conf 를 생성해야 한다.
cd /etc
sudo nano wsl.conf
nano 명령어로 열어 wsl 이 systemd 를 사용하게끔 지정해야 한다.
[boot]
systemd=true
이후 변경사항을 적용하기 위해 `wsl` 을 재부팅 하고 `docker` 가 자동으로 실행되게끔 `systemctl` 에 등록해야 한다.
exit # wsl 쉘에서
wsl --shutdown # 윈도우 cmd 에서
sudo systemctl start docker // 등록
sudo systemctl status docker // 등록 상태 확인

active 상태가 떠야 docker engine 이 정상적으로 구동되고 있다는것이다.
이제 docker 명령어가 정상적으로 호출된다.

3. 결론
폐쇄망 환경에서 windows 에 docker 를 설치하는 것은 흔치 않지만, 필자와 같은 국가사업에 투입되어 있는 분이라면 꼭 한번쯤은 경험해 봐야 하는 것 같다. 부디 필자의 경험이 부족하지만 좋은 레퍼런스가 되길 기원한다..!
'dev > se' 카테고리의 다른 글
| [WSL] Windows 부팅 후 WSL 자동 구동 (0) | 2026.01.05 |
|---|---|
| [Nginx] /etc/nginx/conf.d/default.conf 404 에러 (0) | 2025.12.22 |
| [VMWare] VMWare 프리징 및 부팅 속도 저하 해결 (1) | 2025.01.05 |
| [Dev] VMWare 자체 서버 구축 (1) | 2024.12.04 |
