윈도우 기반 Docker 환경 구축(without Docker Desktop)

시록이의 DevOps·2022년 3월 13일
0

이슈해결

목록 보기
1/1
post-thumbnail

사내에서 윈도우 용(노트북, 데스크탑 등) 웹서버 및 WAS를 구축하는 설치파일을 만들어 달라는 오더가 떨어졌다. 내가 가장 먼저 생각하는 방법은 MSI 파일을 만드는 방법이 생각이 났으나 과연 계속하여서 버전이 릴리즈 될 경우 해당 MSI 파일을 관리할 수 있을까라는 생각이 들었다. 왜냐하면 이런식으로 간다면 니즈에 따라서 모든 환경에 대해서 설치 파일을 만들어야 하지 않을까와 또한 해당 파일들을 만든다고 해도 관리라는 측면에서 할 수 있을까라는 생각이 들었다.

그래서 내가 가장 자신있는 컨테이너를 생각을 하게 되었다. 컨테이너의 장점 중 내가 해당 문제에 적합하다고 생각한 장점은 Portable 한다는 점 그리고 Isolate 된 가상화 기법이기 때문이다. (솔직히 너무 컨테이너 기반의 개발만 하다보니 컨테이너에 너무 집중해서 그런가라는 염려도 있긴하다)

먼저 아무 생각없이 Docker Desktop를 이용해서 설치 Batch 파일을 만들려고 했다. Docker Desktop를 기반으로 환경을 구축하고 Batch 파일을 짜니 너무 손쉽게 해당 문제를 해결하였다. Docker Desktop를 선택한 이유는 너무나 손쉽게 컨테이너 환경을 구축할수 가 있었다.
근데 해당 환경을 계속하여서 테스트를 하던 중 커다란 문제를 발견했다. Docker Desktop은 유료화 되었다는것이었다. 솔직히 Docker가 유료화 된다는 소식은 Kubernetes에서 Docker를 CRI를 제외 한다는 소식을 들으면서 알고 있었지만 솔직히 나에게는 실감이 잘 안났다.(필자는 리눅스 기반으로 주로 개발한다.) 또한 필자는 위의 소식을 들으면서 Podman 혹은 Containerd를 직접적으로 사용하면서 Docker를 살펴본지는 좀 되었다.

이제 문제는 발생하였고 해당 문제는 해결했어야 했다.

내가 생각하는 방법은 3가지였다.

**
1. containerd로 바꾸는 방법

  1. Docker 환경을 내가 구축하는 법
  1. Contianer를 포기하고 다른 설치 방법을 고려하는 법
    **

결론적으로 선택한 방법은 2번이 었다.

선택한 배경은 다음과 같았다.

1번 방법 containerd를 고려하였지만 해당 방법은 window 기반의 컨테이너 이미지를 다시 만들어야 한다는 점에서 내가 컨테이너 기반의 설치 파일을 만드는 목적에 부합한지에 대해서 생각했다. 이렇게 된다면 차라리 3번으로 가는게 좋지 않을까라는 생각이 들었다. 또한 만약에 해당 방법으로 설치 파일을 만들때 운영 측면에서 운영을 하기에 학습 곡선이 분명히 존재할꺼라고 생각했다.(아직 사람들에게는 Docker가 압도적으로 익숙하다)

그래서 Container 기반으로 설치 파일을 만들기 위해서는 2번으로 테스트를 진행을 하였다.

먼저 Docker Desktop이 환경을 어떻게 구축하는지 확인을 했어야했다. 해당 부분에 대해서 구글링하고 확인한 결과 WSL2 기반으로 환경을 구축하고 있었다.

- WSL2

WSL이란 리눅스용 윈도우 하위 시스템(Windows Subsystem for Linux) 라는 뜻으로 윈도우 10에서 네이티브로 리눅스 실행 파일을 실행하기 위한 호환성 계층 입니다. 즉, 윈도우에서 리눅스를 사용하기 위한 도구입니다. 기존 Virutal Machine보다 훨씬 빠른 속도를 낸다고 합니다.

WSL2는 간단하게 윈도우에 리눅스 커널을 올리는 방법이라고 생각하면 됩니다. 즉 리눅스 커널을 올린다면 컨테이너를 돌리는데 문제가 없다고 생각했습니다(이미 Docker Desktop에서 증명되었다).

** WSL2 또한 문제가 존재합니다. 2019년에 해당 기능이 릴리즈 되면서 많은 윈도우 버전에서 지원하지 않습니다. (Window Server 2019 에서 조차 몇몇 빌드 이후에나 사용이 가능하다고 합니다)

- WSL2 활성화

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

위의 명령어는 Window의 기능들을 활성화하는 명령어 입니다.


윈도우 기능에서 가상 머신 플랫폼, Linux용 Windows 하위 시스템를 활성화하는 것입니다.

이후 리부팅을 한뒤 WSL2로 업데이트를 하기 위해서 Linux 커널 업데이트 패키지 다운로드(https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)를 하여 설치를 해줍니다. (해당 업데이트는 Docker Desktop이 설치될때도 처음에 해주어야합니다)

이후 Powershell를 열고

wsl --set-default-verion 2

WSL2로 기본 버전으로 설정합니다.

그 후 Microsoft Store 열고 자신이 쓰고자 하는 Linux 배포를 선택하여 설치를 하고 실행을 해줍니다.

  • 저 같은 경우는 오프라인 설치를 염두 하였기 때문에 해당 패키지를 미리 다운로드를 받고 실행하였습니다.

더 자세한 내용은 https://docs.microsoft.com/ko-kr/windows/wsl/install-manual 공식 홈페이지에서 확인 해주시길 바랍니다.

다음 포스팅에서 리눅스 컨테이너 내에서 Window WMIC를 이용해서 해당 bios serialnumber를 가져오게하도록 설정하는것을 포스팅하도록 하겠습니다.

profile
귀차니즘을 원동력으로 모든 것의 자동화를 생각합니다.

0개의 댓글