프린세스 다이어리

도커(Docker)는 왜 도커인가요? 도커의 의미와 도커이미지가 무엇인지 정리 본문

BE

도커(Docker)는 왜 도커인가요? 도커의 의미와 도커이미지가 무엇인지 정리

개발공주 2021. 9. 14. 12:13
728x90
최근 가장 많이 사용되고 있는 가상화 기술은 컨테이너다. 컨테이너를 관리하는 플랫폼 중에서 가장 많이 쓰이고 있는 도커에 대해서 공부해보았다.

 

1. 도커란?

 

도커는 컨테이너를 만들고 사용할 수 있도록 도와주는 컨테이너 플랫폼이다. 앞서 알아보았듯 컨테이너란 한 운영체제 여러 애플리케이션을 개별적으로 실행하고 관리하도록 도와주는 기술 중 하나다. 도커는 Cgroups나 Namespace, runC 등의 리눅스 커널이 제공하는 기능 위에 빌드되기 때문에, 독립적인 컨테이너들이 하나의 리눅스 인스턴스 안에서 커널을 공유하며 격리되어 실행할 수 있도록 한다. 여기서 커널이라는 것은 OS가 응용 프로그램을 실행하기 위해 필요한 여러 가지 기능을 제공하는 핵심 프로그램 중 하나다. 정리하면 도커는 한 OS 안에서 여러 컨테이너를 가벼운 모듈식 가상 머신을 쓰는 것처럼 구축, 배포, 복사 등의 작업을 할 수 있도록 도와주는 플랫폼이다.

 

2. 왜 "도커", 컨테이너" 라는 명칭을 갖게 되었는가

 

도커는 컨테이너를 관리하는 플랫폼이다.

도커는 항만에서 일하는 부두 노동자 라는 뜻이다. 이렇게 규격화된 컨테이너를 옮기고 관리하는 작업을 하는 노동자라는 것이다. 컴퓨터에서도 도커는 규격화된 컨테이너 이미지를 메모리상에 띄우거나, 컨테이너 내부에서 작업한 내용을 다시 이미지로 수정해서 반영하는 등의 역할을 하는 소프트웨어를 칭한다. 

 

컨테이너는 어떠한 프로그램도 어느 환경에서나 바로 실행될 수 있도록 규격화된 기술이다.

 

일반적으로 컨테이너는 배를 통해 물건을 유통할 때 사용되는 모두 똑같이 생긴 커다란 수송용 박스를 의미한다. 컨테이너가 없다면 배에 다양한 물건들을 마구잡이로 올리게 되어, 옮기는 도중에 분실과 변질 등의 위험이 생길 것이다. 컨테이너 박스는 규격화되어 있어, 내부에 들어있는 물품이 무엇인지 상관없이 안전하게 다른 교통수단에 그대로 옮겨 실을 수 있을 것이다. 

 

컴퓨터에서도 마찬가지로 규격화된 컨테이너 안에는 실행할 수 있는 애플리케이션과, 이를 위한 라이브러리, 환경설정 등이 들어 있어 컨테이너만 잘 받아오면 누구든 따로 실행 환경을 셋팅할 필요 없이 바로 구동할 수 있게 된다. 컨테이너에는 백엔드 프로그램, DB서버, 메시지 큐 등 어떠한 프로그램도 추상화되어 들어있을 수 있고, 어떤 환경에서든 컨테이너만 받아 오면 프로그램의 배포 및 관리가 쉬워진다.

 

3. 도커 이미지의 개념

도커파일이 빌드되어 도커 이미지가 되고, 도커 이미지를 실행시키면 도커 컨테이너로 뽀잉

 

이미지는 컨테이너 실행에 필요한 파일과 설정값을 포함하고 있는 것으로, 상태값을 가지지 않고 변하지 않는다. 앞서 계속 언급되고 있는 컨테이너는 이 이미지를 실행한 상태라고 볼 수 있다. 한 이미지에서 여러 컨테이너를 생성할 수 있으며, 이미지는 변하지 않고 그대로 남아있기 때문에 각 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 다시 컨테이너를 생성하면 된다. 

 

이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 더 이상 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다. 이미지만 가지고 있다가 새로운 서버가 추가되면, 이미 만들어 놓은 이미지를 다운 받아서 컨테이너를 실행시키기만 하면 된다. 한 서버에 여러 개의 컨테이너를 실행할 수 있고, 수백, 수천 대의 서버에서도 문제없다. 

 

도커 이미지를 다운받는다고 표현했는데, 도커 허브(Docker Hub)에서는 도커 이미지를 등록하고 내려받을 수 있는 환경을 제공한다. 마치 앱스토어에서 프로그램을 다운로드하는 거나 마찬가지다. 도커 이미지의 용량은 보통 수백 MB에서 수 GB 이상이 되는 경우가 흔한데, 이렇게 전 세계의 큰 용량, 다량의 도커 이미지를 무료로 저장하고 관리하게 해 준다.

728x90
Comments