IT,프로그래밍/Devops

[도커 노트 #1] 도커란?

도커란?

기존의 문제점

  • 서버의 환경이 AWS,Azure 등으로 바뀌게되거나 centos에서 ubuntu를 쓰거나 할때에 세팅을 다시 해줘야함

  • MSA에서 작은 서버를 여러대를 관리해야 하는 어려움이 생김

위와 같은 문제를 해결하기 위하여 도커가 탄생하게 되었다.

도커는

컨테이너 기반의 오픈소스 가상화 플랫폼 이다.

 

마치 배에서 물건을 화물선에 컨테이너에 담아 옮기듯이 프로그램과 실행환경을컨테이너로 추상화 하고 동일한 인터페이스 를 제공해서

프로그램의 배포 및 관리 를 단순하게 해줍니다.

 

그렇기에 백앤드 프로그램, 데이터베이스 서버 등 프로그램을 PC,AWS,AZURE 등 어디서든 실행할수 있게 만들어 줍니다.

이와 같은 특성 때문에 CI/CD에서 사용됩니다.

기본개념 및 용어

 

컨테이너

가상머신과 도커

기존의 가상머신(VM)의 경우 Host OS위에 하이퍼 바이저(hypervisor)가 존재하여 가상화 방식으로 다수의 OS를 실행 할수 있게 만듭니다.

 

하지만 이때에 성능의 문제가 생겼기에 프로세스 격리 를 하는 방식이 생겼습니다.

 

이것은 도커는에서는 컨테이너 라고 합니다.

 

프로세스를 격리하기 떄문에 1개의 서버에서 여러개의 컨테이너를 독립적으로 실행하여 마치 여러개의 VM을 사용하는 느낌을 줍니다.

이미지

Docker — Organize everything I know documentation

도커에서 중요한 개념인 이미지는 컨테이너 실행에 필요한 파일과 설정값을 포함하고 있는것입니다.

 

이 이미지는 상태값을 가지고 있지 않습니다.

 

무슨말이냐면, 컨테이너는 이미지를 실행한 상태라고 볼수 있습니다 따라서 추가되거나 변경되는 값은 이미지가 아닌 컨테이너 에 저장됩니다.

 

그렇기에 같은 이미지로 여러개의 컨테이너를 실행할수 있고, 컨테이너가 변경되거나 삭제되도 이미지는 불변합니다.

 

즉, 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기떄문에 컴파일하거나 설치할 필요가 없습니다

레이어 저장방식

Docker Layer

도커이미지는 컨테이너를 실행하기 위한 정보를 가지고 있기에 용량이 수백MB가 됩니다.

 

따라서 기존 이미지에 파일을 변경했다는 이유로 다시 이미지를 받는것은 매우 비효율적이 됩니다.

 

이것을 해결하기 위해 레이어 라는 개념을 이용합니다.

 

이 레이어를 이용하여 새로운 이미지를 다시 다운 받는것이 아닌 바뀐 이미지만 다시 받으면 되기에 매우 효율적입니다.