도커(Docker)를 사용하는 이유와 설치

취미로 개발을 하고 있는데 자료나 예시들을 찾아보면 대부분 곁다리로 Docker라는 게 존재하길래

어느 정도 찾아보고 정리해 봤습니다


(일단 쓰는 데에는 다 이유가 있는 법)

 

Docker

내 PC에서 실행되는 것을 다른 사람 PC에도 동일하게 실행되게 도와주는 도구

간단하게 설명하면 그렇습니다

도커는 애플리케이션과 실행 환경을 하나의 컨테이너에 패키징을 해서 어느 환경에서든 동일하게 실행할 수 있게 도와주는 플랫폼입니다

 

예를 들면 프랜차이즈 음식점이 있는데 이 음식점들은 재료들을 본사에서 제공받고 음식을 제조합니다

이러는 이유는 각 프랜차이즈마다 맛이 천차만별이면 안 되는 환경이어서 그런 것인데 도커가 그런 역할입니다

 

개성이 넘치는 개발환경들

위의 예시에서 이야기했듯 어느 환경이든 균일한 아웃풋을 내기 위한 게 우선입니다

 

개발을 하다 보면 본인의 로컬 PC에서는 잘 작동을 하는데 막상 본진인 운영서버 PC 혹은 개발서버 PC에 해당 프로그램을 이식했을 때 환경설정과 관련한 오류, 호환성, 기타 등등 여러 잔오류부터 시작해서 심하면 아예 구동이 안 되는 경우도 존재합니다

 

과거에는 이를 해결하고자 가상머신으로 개발환경 세팅을 해왔었습니다

하지만 가상머신의 단점으로는

 

1. 무겁다

각 가상머신(VM)마다 OS가 존재하기 때문에 리소스를 많이 먹습니다

가상머신에는 일단 OS를 설치를 해야만 하기 때문이죠

 

2. 속도가 느리다

위에서 언급한 문제와 연계되는 문제입니다

일단 부팅 속도가 느린 편이고, 실행속도 또한 느린 편입니다

 

3. 유연하지 못하다

VM은 상대적으로 이미지가 크고 복잡하다 보니 배포 및 이식이 어려운 편이기도 하고

이러하다 보니 타인에게 같은 환경을 제공하려면 VM통째로 공유를 해야 하는 경우가 발생합니다

 

위에 기술된 단점들은 현대적인 개발에 있어서 발목을 잡는 문제들이 있는 편이죠

물론 그렇다고 VM을 아예 사용을 안 하는 것은 아닙니다.

특히 완벽하게 분리된 시스템을 필요로 되는 서비스에서는 VM을 사용하기도 합니다

 

이러한 단점들을 해결하고 개발환경을 동일하게 조성하여 균일한 아웃풋을 내기 위해 도커를 사용하는 겁니다

 

설치

https://www.docker.com/

위의 사이트에서 도커를 설치합니다

 

설치를 하면서

"Allow Windows containers to be used with this installation" 라는 옵션이 있는데 굳이 설치 안 해도 괜찮습니다

(대부분의 경우 리눅스 컨테이너 기반으로 사용하기 때문에 그렇습니다)

필요하다면 나중에 변경할 수 있기 때문에 일단 넘어가도 됩니다

 

그리고 설치가 된 이후 이런 오류가 발생할 수도 있는데

우선 WSL2가 설치되어 있는지 확인을 합니다
(보통 없을 경우 도커 설치 과정에 WSL2를 설치하게 될 겁니다)

설치가 되어있지 않거나 버전과 관련한 오류가 발생하면 업데이트를 진행하고 난 이후

 

Docker Desktop → Settings → General → Use the WSL 2 based engine 에서 체크가 안되어있다면 체크하시면 됩니다

 

(필자의 경우 위의 과정대로 해도 안되어서 재부팅해서 해결이 되었습니다)