새소식

기술 습관/개발 잡학지식

[Docker] Windows에서 Docker를 사용하면 좋은 이유? 혹은 좋지 않은 이유?

  • -

수업 내용 중 Docker를 설명하고 설치하는 내용 중 의문이 생겨 조사해본 내용을 노션에서 블로그로 옮긴다.

처음 Docker를 설치해본게 약 4년 전으로, 당시에 나는 MacOS를 사용 중이었는데 그 때는 Docker를 사용하지 않으면 아예 사용 자체가 안되는게 있어 Docker를 설치했던 기억이 있는데, 당최 그 이유가 생각이 잘 나지가 않는다. 워낙 마이너한 이슈였었고 그때만 해도 Docker를 지금보다도 몰랐기 때문인 것 같다.

그래서 대충 MacOS 환경에서는 거의 필수적으로 Docker가 필요했다는 정도의 인상이 있었는데, 그렇다면 Windows 환경에서 꼭 Docker사용이 필요할까? 없이도 잘만 개발이 가능한데? 하는 의문이 들어 아래 내용을 구글링해보게 됐다. 결론적으로 말하자면 사실상 Windows에서 사용할 때의 이점이라기보다는 Docker 사용 자체의 이점에 가깝다고 할 수 있겠다.

Windows에서 사용하면 좋을 이유

1. 실제 배포되는 환경과 동일한 환경(Linux)에서 테스트 가능

컨테이너 환경 내 구성 변수를 패키징하므로 호스트 서버 조건이 아닌 컨테이너 내의 환경 변수를 따른다.

2. 동일한 애플리케이션의 다른 버전 실행

여러 버전의 응용 프로그램이 존재하도록 허용함은 물론 동시에 실행되는 것 또한 허용하는 방법을 Windows에서는 기대할 수 없다.

그러나 컨테이너를 사용하면 동일한 애플리케이션의 여러버전을 혼란 없이 나란히 실행하는 것이 가능. 애플리케이션의 프로세스 또한 컨테이너를 통해 격리된다.

3. Windows와 Linux에서 동일한 도구 세트 사용

조직 내 window 서버와 linux 서버가 모두 있을 경우 docker는 애플리케이션 배포를 위한 도구 세트를 표준화 하는 방법으로 유용할 수 있다. 몇가지 경우를 제외하면 동일한 Docker 명령이 Window와 Linux 모두에서 작동한다. 즉 동일한 스크립트와 프로세스를 사용하여 두 환경 모두에 컨테이너를 배포할 수 있다.

실제로 현업 당시, 여러개의 os환경에서 배포, 패치 등을 진행했었고 그 때 각자 어떤 환경이냐에 따라 .sh파일과 .bat 파일 중 어떤 것을 돌릴 것이냐를 판단하는 스크립트 파일을 이사님이 따로 작성하셔서 올바르게 동작되도록 했는데, docker를 사용 시 스크립트를 구분하지 않고 동일한 명령어로 작동할 수 있으니 관리 측면에서 이점을 가지게 된다. (*그러나 솔루션처럼 배포되는 고객사 환경이 windows일 수도, linux일 수도 있는 경우 이사님처럼 여전히 모든 스크립트가 관리되어야 한다 ㅎ..)

Windows에서 사용하지 않는게 좋을 수 있는 이유

1. GUI 친화적이지않다.

기본적으로 CLI 기반. 그러나 Linux 자체가 낯설지 않을 확률이 높은 개발자에게는 큰 단점은 아닐 것으로 생각된다.

2. 모든 Windows에서 지원하지 않는다.

Windows 10 또는 Windows Server 2016 이상에서만 지원

→ 어디서나 배포 가능하다. 라는 이점에 위배됨

(구글링 해보니 Windows11에서도 wsl2 이슈를 해결하면 사용은 가능한 것으로 보인다.)

3. 리소스 오버헤드 및 성능

컨테이너 내부에 어플리케이션을 격리하려면 리소스 오버헤드 형태로 비용을 지불, 즉 docker를 실행하는 데 일정량의 시스템 리소스를 투자해야한다. 이는 그냥 애플리케이션을 사용하는 것보다 사용할 수 있는 리소스가 줄어들고 성능이 저하될 수 있다. 그러나 컨테이너의 성능 손실을 대부분의 경우 가상 머신 내에서 애플리케이션을 실행할 때 직면하게 되는 상황에 비해 최소화된다.

결론

Windows의 경우 Linux와 마찬가지로 Docker 컨테이너는 애플리케이션을 보다 쉽고 빠르게 배포할 수 있는 새로운 기회를 제공한다. 그러나 Windows 환경에서 Docker를 사용할 때의 몇 가지 확실한 장단점이 있있다. 즉 Windows에서의 Docker 컨테이너는 확실히 살펴볼 가치가 있지만 모든 Windows 애플리케이션 배포에 완벽하게 적합한 것은 아니다. 

그러나 살펴본 바, 해당 단점들이 각자의 타개 방법을 가지고 치명적인 단점이 아니므로 사용에 저어될 만한 약점은 아닌 듯 하다. 따라서 각자의 개발환경에 장점이 확실하다면 사용하지 않을 이유가 없다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.