▸인프라/Docker

도커(Docker)란?

코데방 2020. 3. 16.
728x90

[ 도커(Docker)란? ]

 

복잡한 기술적 설명들은 인터넷에 많으니 기술적인 부분 빼고 최대한 간단히 개념만 정리하고 넘어가겠습니다.

 

도커는 간단히 리눅스에서 하나의 프로세스가 독립적으로 실행될 수 있도록 하는 가상의 컨테이너 기술입니다. 리눅스에서 하나의 프로그램을 구동하기 위한 환경설정 과정이 매우 복잡한데, 이 부분을 통째로 이미지화해서 저장한 뒤 다른 곳에서 그대로 불러와 사용하는 방식입니다.

 

이미지로 저장된 환경이 독립적으로 실행될 수 있도록 분리해주는 개념이 리눅스의 컨테이너입니다. Hyper-V나 VMWare 같은 가상화 기술과 다른 점은, OS의 자원을 최대한 활용하면서 프로세스 실행에 필요한 부분만 최소한으로 가상화 환경으로 구동시킨다는 것입니다.

 

가상화의 경우 OS안에 아예 독립적인 별도의 가상 컴퓨터를 생성하기 때문에 중복되는 부분이 많이 생깁니다. 하드웨어 자원이 많이 필요하다는 것이죠. 하지만 컨테이너는 기존 OS를 최대한 활용하면서 자신의 프로세스 구동에 필요한 부분만 가상화 환경으로 구성함으로써 경량화를 실현했습니다. 즉, 같은 하드웨어 스펙이라면 훨씬 더 빠르게 동작할 수 있다는 것입니다.

 

또한 도커는 깃허브 같이 만들어진 이미지 파일을 공유할 수 있어 보다 편리하게 리눅스의 프로세스 실행 환경을 구축할 수 있도록 해줍니다. 예를 들어 누군가 리눅스에서 MySQL이 구동될 수 있도록 한 이미지 파일을 만들어 올려두었다면, 굳이 직접 환경설정과 설치를 처음부터 하지 않고 해당 이미지 파일을 받아 도커 컨테이너를 구동시키면 되는 것이죠.

 

 


 

 

말이 조금 장황해서 이해하기 어려우니 예시를 들어보겠습니다. 집에 3살 된 애기가 한 명 있다고 해보겠습니다. 이사를 가야하는데 이 애기는 주변 환경이 조금이라도 달라지면 빽빽 울어버려 골치가 아픕니다. 어쩔 수 없이 이사를 한 뒤에 큰방에다가 기존 집과 완전 동일하게 셋팅해서 애기를 데려다 놓으니 이제 울지 않습니다. 큰방에는 부엌도 있고 화장실도 있고 놀이방도 있고 모든 부분이 기존 집과 동일합니다. 이렇게 집 안에다가 집을 하나 더 만들어버리는 방식이 기존의 가상화 컴퓨팅입니다. 

 

 

 

 


 

 

하지만 사실 애기한테 필요한 곳은 놀이방입니다. 부엌이나 거실, 테라스 등은 부모님한테나 필요하지 애기는 별로 신경을 안씁니다. 필요하면 나가서 사용하면 되죠. 이 경우 위와 같이 아예 집을 통째로 구현해버리는 것은 매우 낭비가 됩니다. 그래서 이번에는 놀이방만 기존 집의 환경과 동일하게 셋팅해줬습니다. 애기는 같은 놀이방을 가지게 되어 울지 않고 부모님은 본인들의 공간이 넓어진데다가 놀이방을 만들고 유지하는 노력도 훨씬 덜하게 되어 좋아합니다. 이제 이사를 자주 가도 별로 부담이 없게 됐습니다.

 

이렇게 딱 필요한 부분의 환경만 가상으로 구축해 독립적인 환경으로 만들어주는 것이 컨테이너 방식입니다. 여기서는 놀이방이 컨테이너 역할을 하는 것이죠. 그리고 놀이방 사진을 잘 찍어뒀다가 어떤 집으로 이사를 가건 사진에 있는 환경대로 놀이방을 셋팅해주는 역할을 도커 엔진이 맡게 됩니다.  플랫폼에 의존적이지 않고 이동이 자유로운 개발 환경을 구성할 수 있게 만들어주는 것이죠.

 

 

728x90

댓글

💲 추천 글