IT/기초 지식

[Docker] Windows10 환경에서 WSL2+Docker사용하기

개발자 두더지 2022. 1. 28. 00:18
728x90

Docker이란?


Docker이란 간단히 말하면, 가벼운 컨테이너형 어플리케이션 실행환경을 의미한다. 독립된 실행환경이라고 한다면 Hyper-V나 Windows Virtual PC등 가상 실행 환경을 떠올리는 경우가 많은데, 이러한 것들은 PC의 하드 웨어를 에뮬레이션하여 그 위에 OS나 어플리케이션을 동작시킨다. 또한 목적 어플리케이션이라는 관계없는 서비스 등도 다수 동작된다. 그로 인해 오버 헤드가 많고, 리소스를 비효율적으로 많이 쓰게 된다. 

 이에 반해 컨테이너란 액세스할 수 있는 리소스나 권한 등을 제한, 분리한 "프로세스"이다. 컨테이너를 관리하는 코스트는 프로세스를 관리하는 코스트와 거의 동일하며, 가상 머신을 관리하는 코스트와 비교하면 매우 가볍다. Docker의 실행 환경은 아래와 같다. 

 

 

WSL2이란?


 WSL은 Windows Subsystem for Linux의 약어로 윈도우 10에서 네이티브로 리눅스 실행 파일을 실행하기 위한 호환성 계층이다.

 그 중 WSL2는 두 번째 버전으로 WSL2의 최대 특징은 가상 머신을 사용해서 Linux 커널이 동작하는 "실제 Linux 환경"이라는 것이다. WSL1에서는 Linux실행 환경을 Linux 커넬이 아닌, LXCore이라는 불리는 "서브 시스템"이 만들어 냈으며, 커넬로의 함수 호출을 Windows 커넬로의 함수 호출로 변환하는 동작을 했다. 

 그에 반해 WSL2은 전용 가상 머신 환경인 "Light Weight utiliy Virtual Machine"(경량 유틸리티 VM)을 사용해, 로컬 배치(Microsoft의 독자 배치)을 해당 Linux 커넬 바이너리를 동작시켜 가상 머신내에 Linux의 실행 환경을 만든다. WSL1와 WSL2의 차이는 다음과 같다.

 이제 Docker과 WSL2을 사용하기 위한 설치 방법에 대해 알아보자.

 

 

설치 방법


1. WSL2의 설치

 맨 처음 WSL2를 인스톨하고 실행해보자. 

Enable virtualization

 wsl2를 실행하기 위해서는 gpu의 Virtualization이 유효화되어 있을 필요가 있다. Task Manager를 열어 Performance > CPU 화면으로 이동해서, virtualization:Enabled로 되어 있는지 확인하자.

 혹시 Enabled로 되어 있지 않은 경우는 Bios를 열어 CPU Configuration > Intel(AMD) Virtualization Technology:Enabled으로 할 필요가 있다. 

Enable Windows Feature

 관리자 모드로 Windows PowerShell을 실행하여 아래의 두 개의 커맨드를 실행하자. windows를 다시 실행하지 않으면 기능이 유효화되지 않으므로 커맨드를 실행한 후에 다시 실행하자.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

WSL2 커넬의 설치

 Windows 공식 문서에 들어가서 링크를 클릭해 파일을 다운로드 받은 후, 실행시킨다.

Ubuntu(Linux OS)

 Microsoft Store에서 Ubuntu-20.04를 설치한다. 물론 필요에 따라 다른 버전이나 다른 Linux OS 설치해도 상관없다. Microsoft Store이 아닌 다른 곳을 경유해서 설치해도 괜찮다.

WSL2의 설정, 실행확인

 이것으로 WSL2를 이용할 준비가 거의 끝났다. PowerShell이나 Terminal을 열어서 실제로 WSL의 커맨드를 실행해보자. 기본적으로 WSL2를 이용하는 커맨드와 설치한 Ubuntu로 WSL2를 이용하는 커맨드를 실핸다. 커맨드의 실행 후 wsl -l -v를 실행하여 Ubuntu가 WSL2로 움직이고 있음을 확인하자.

wsl --set-default-version 2
wsl --set-version Ubuntu-20.04 2

wsl -l -v
#   NAME                   STATE           VERSION
# * Ubuntu-20.04           Running         2

 마지막으로 적당한 WSL 커맨드를 실행하여 Linux의 커맨드가 동작하고 있음을 확인하자. Windows 상에서부터 wsl {command} 의 형식으로 커맨드를 실행하거나 wsl 커맨드를 실행하여 Linux상에 로그인한 후에 커맨드를 실행하는 것도 가능하다.

wsl lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description:    Ubuntu 20.04 LTS
# Release:        20.04
# Codename:       focal

 

 

2. Docker

WSL2가 Install됐다면 다음은 Docker을 설치하고 실행하자. 

Install Docker Desktop

Docker 공식 사이트에 이동해서 설치 파일을 다운로드 받는다. 설치 파일을 실행하여 다운로드하자. 특별히 체크를 제외하거나 할 필요는 없다. 그대로 진행하자.

 WSL2가 올바르게 설치됐다면 General 화면의 Use the WSL2 based engine에 체크가 되어 있으며, Resource 화면의 Enable intergration with my default WSL distro에도 체크가 되어 있을 것이다. 체크가 되어 있지 않다면 체크를 한 후 Apply&Restart를 누르면 된다. 

 그 후에 튜토리얼을 실행하고 싶다면 진행해도 괜찮다.

Docker 커맨드 실행 확인

docker run -dp 80:80 docker/getting-started

 Terminal을 열어서 위 커맨드를 실행시키면 docker 브라우저에 아래와 같이 실행된다.


참고자료

https://qiita.com/KoKeCross/items/a6365af2594a102a817b

https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9A%A9_%EC%9C%88%EB%8F%84%EC%9A%B0_%ED%95%98%EC%9C%84_%EC%8B%9C%EC%8A%A4%ED%85%9C

https://atmarkit.itmedia.co.jp/ait/articles/1906/14/news019.html

https://atmarkit.itmedia.co.jp/ait/articles/1609/01/news053.html

 

 

728x90