Linux용 Windows 하위 시스템 2는 Windows 10 및 11에서 놀라운 도구이며 Docker와 원활하게 통합됩니다. 개발자는 이러한 소프트웨어가 제공하는 기능과 Docker-WSL 2 설정을 최대한 활용할 수 있는 방법을 이해하는 것이 중요합니다.

Docker란 무엇인가요?

Docker는 개발자가 컨테이너 내에서 애플리케이션을 효율적으로 빌드, 배포 및 실행할 수 있는 오픈 소스 플랫폼입니다. 모든 종속성이 번들로 제공되므로 어떤 환경에서도 프로젝트를 쉽게 배포할 수 있습니다.

Docker는 안정적이고 기능적이며 확장성이 뛰어나 많은 컨테이너화 플랫폼 중에서 매우 인기가 있습니다. 테스트 및 배포를 위한 깔끔하고 가벼운 환경을 제공하는 필수 DevOps 도구인 Docker 엔진에서 실행됩니다. Docker는 가상 머신과 유사하지만 기본 하드웨어가 아닌 운영 체제를 가상화합니다.

소프트웨어 개발자를 위해 Docker는 필요한 종속성, 라이브러리 및 구성을 포함하는 다양한 마이크로서비스용 개별 컨테이너를 생성하여 워크플로를 간소화합니다. 각 마이크로서비스 컨테이너는 격리되어 있으며 개별적으로 확장할 수 있습니다.

WSL 2에서 Docker를 사용하는 방법

Docker는 Windows, macOS 및 Linux와 같은 모든 주요 운영 체제와 호환됩니다. Windows 10 또는 11을 사용하는 경우 Docker Desktop을 통해 Docker를 사용하고 Linux용 Windows 하위 시스템 2와 통합하여 성능을 향상시킬 수 있습니다. 공식 Docker 웹사이트 에서 Windows용 Docker Desktop을 다운로드할 수 있습니다.

WSL(Linux용 Windows 하위 시스템)은 Windows 사용자가 가상 머신이나 듀얼 부팅을 설정하지 않고도 우분투 및 칼리와 같은 Linux 배포판을 실행할 수 있게 해주는 유용한 기능입니다.

이는 또한 Windows 사용자가 추가 설치 단계 없이 Linux 명령줄 도구, 애플리케이션 및 유틸리티를 직접 사용할 수 있음을 의미합니다. WSL의 최신 버전인 WSL 2는 더욱 향상된 안정성과 전용 Linux 커널을 제공합니다.

Docker 컨테이너는 견고하기 때문에 서버를 호스팅하도록 구성할 수도 있으며, 일반적으로 nginx docker 컨테이너가 웹 서버로 사용됩니다. 이 외에도 여러 가지 방법으로 Docker를 사용할 수 있습니다:

⭐ 쉽게 Linux 배포판 실행

이 글도 확인해 보세요:  Windows에서 "Windows Hello 지문과 호환되는 지문 스캐너를 찾을 수 없습니다" 오류를 수정하는 방법

⭐ 학습 또는 테스트 목적으로 웹 서버 설정

⭐ 휴대용 배포 애플리케이션

⭐ 애플리케이션을 단일 이미지 파일로 번들

⭐ 단순화된 CI/CD 파이프라인

Windows 서브시스템 for Linux 2와 Docker 활용 모범 사례에 익숙해져야 합니다, 다른 플랫폼이나 도구를 사용할 때와 마찬가지로. 개발자로서 개인적인 경험을 통해 말씀드리자면, 다음 팁을 워크플로에 통합하면 생산성과 효율성이 훨씬 더 높아질 것입니다.

VS Code와 WSL 2 통합하기

Visual Studio Code는 놀라운 기능, 커뮤니티 및 확장 기능으로 많은 사랑을 받는 인기 있는 IDE입니다. 개발자의 입장에서는 Windows 플랫폼에서 앱을 개발하는 동시에 Linux 커널에서 앱을 실행할 수 있다는 것은 믿을 수 없을 정도로 유용하고 놀라운 기능입니다.

VS Code를 Linux용 Windows 서브시스템에 통합하면 특화된 Linux 커널을 활용하여 플랫폼 간 호환성을 향상시킬 수 있습니다.

Windows에서 WSL 2가 포함된 VS Code의 통합 터미널을 활용하여 워크플로우를 더욱 간소화할 수 있습니다.

WSL 2 파일 시스템 활용

Docker 컨테이너를 올바르게 실행하려면 기본 Windows 파일 시스템에 크게 의존하지 않고 WSL 2 배포판의 파일 시스템을 사용하는 것이 중요합니다. WSL 2에서 Docker 컨테이너로 작업한 경험을 통해 프로젝트 파일을 WSL 내에 저장하는 것이 더 낫다는 것을 알게 되었습니다.

네이티브 Linux 스크립트 사용

작업하게 될 많은 컨테이너화된 프로젝트에는 아마도 Linux에서 자동화를 위한 스크립트가 함께 제공될 것입니다. 일반적으로 이러한 스크립트는 Linux용으로 먼저 개발되며 Windows 개발자는 우선순위가 아닙니다.

WSL 2를 사용하면 팀 전체가 동일한 Linux 자동화 스크립트를 사용할 수 있으며, 팀을 위해 Windows 호환 자동화 스크립트를 유지 관리하는 것에 대해 걱정할 필요가 없습니다.

보안 및 성능 향상을 위한 BuildKit 구성

BuildKit은 성능 및 보안 측면에서 기존 Docker 빌드 프로세스를 개선하는 오픈 소스 도구 키트로, Docker와 직접 통합되어 있으므로 별도로 설치할 필요가 없습니다.

기본적으로 빌드키트를 사용하도록 설정하면 컨테이너가 빌드키트 툴킷으로 빌드되어 보안, 동시성, 유연성 및 캐싱이 향상됩니다.

기본적으로 BuildKit을 사용하도록 설정하려면 ~/.profile 구성 파일을 다음과 같이 변경해야 합니다:

 export DOCKER_BUILDKIT=1. 

리소스 제한 설정

WSL 2 백엔드를 Docker Desktop과 통합하면 Docker에 모든 CPU 리소스에 대한 액세스 권한을 부여할 수 있습니다. 이렇게 하면 리소스를 많이 사용하는 컨테이너의 성능을 개선하는 데 도움이 됩니다.

이 글도 확인해 보세요:  Windows 11에서 앱에 자동 색상 관리를 사용하도록 설정하는 방법

그러나 경우에 따라 컨테이너가 많은 양의 초과 메모리를 할당하여 중요한 OS 프로세스가 충돌할 수 있습니다. 데이터베이스 컨테이너 또는 캐싱 마이크로서비스를 사용할 때 이 문제가 발생할 가능성이 높습니다.

다행히도 시스템 메모리와 CPU 사용량을 제한하도록 Docker 컨테이너를 구성할 수 있습니다. 시스템 메모리를 구성할 때는 사소한 실수라도 심각한 결과를 초래할 수 있으므로 항상 주의해야 합니다. Docker 컨테이너가 사용하는 메모리 및 CPU 리소스를 제한하는 방법에 대한 자세한 안내는 공식 Docker 문서 를 참조하세요.

캐시된 메모리 복구

WSL 2에서 Docker 컨테이너를 실행하는 경우, 컨테이너가 종료되면 해당 메모리를 해제해야 합니다. 안타깝게도 운영 체제 커널은 캐시에 데이터를 유지하는 경향이 있으므로 WSL 2에서 회수하는 유효 메모리가 충분하지 않을 수 있습니다.

WSL 2에서 루트를 통해 다음 명령을 실행하여 불필요하게 캐시로 활용되고 있는 모든 메모리를 복구할 수 있습니다:

 echo 1 > /proc/sys/vm/drop_caches 

WSL 2로 더 스마트하게

WSL 2는 Windows 기반 개발자를 위한 최고의 기능으로, 개발자의 Docker 사용 방식을 완전히 바꿔놓았습니다. 개발자는 성능, 보안 및 워크플로 유연성을 개선하기 위해 WSL과 함께 Docker를 사용하기 위한 모범 사례를 이해해야 합니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.