기초 메모지

도커(Docker) - 도커란? 본문

Frameworks, Platforms/Docker

도커(Docker) - 도커란?

라큐브 2023. 2. 20. 13:36

도커(Docker)?

도커(Docker)는 프로세스를 컨테이너(Container)라는 격리된 공간에 실행시켜 환경(운영체제, 라이브러리)에 영향을 받지 않고 동작 시킬 수 있는 오픈소스 가상화 플랫폼 입니다.

배포 하기

개발자라면 피할 수 없는 개발 환경 구성은 많은 시간과 노력이 필요합니다. 운영체제, 라이브러리 버전에 따라 동작이 될 수도 있고, 안될 수도 있습니다.

최근 마이크로 서비스 아키텍처가 각광받으며 한 서비스에 여러가지 서비스가 포함하면서 충돌 가능성이 늘어나고 있습니다.

가상 머신(VM)을 사용하면 되지 않을까?

가상 머신을 사용하면 편리하지만 호스트 운영체제 안에 게스트 운영체제를 가상화하는 작업은 무겁고 느린 작업이기때문에 실제 운영 환경에서 사용하기가 어렵습니다.

서버 증설을 하면 되지 않을까?

서비스 간 간섭을 줄이기 위해 N개 서비스 마다 N개의 서버를 사용하면 좋겠지만 비용뿐만 아니라 관리 효율성이 낮기 때문에 쉽지 않은 선택입니다.

도커(Docker)를 사용해보자

도커는 가상 머신과 서버 증설의 이점을 모두 가지고 있습니다.

  1. 컨테이너(Container) 라는 격리된 공간에서 프로세스를 실행시키기 때문에 환경에 영향을 받지 않고 동작됩니다.
  2. 프로세스만 가상화하기 때문에 일반적인 프로세스처럼 유연한 리소스 사용이 가능하고 가볍기 때문에 운영 환경에서도 사용하기 쉽습니다.
  3. 각각의 마이크로 서비스가 격리된 컨테이너에서 실행되고 가볍기 때문에 소수의 서버로만으로도 서비스 운영이 가능합니다.

도커 컨테이너(Docker Container)

컨테이너(Container)는 응용 프로그램과 종속성을 함께 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술입니다.
컨테이너라는 격리된 공간에서 동작되어 환경에 영향을 받지 않고 안정적인 운영이 가능합니다.

도커 이미지(Docker Image)

컨테이너 격리 기술 만큼 중요한 내용은 이미지(Docker Image)입니다.

이미지(Image)는 컨테이너(Container)에서 실행되는 프로그램이 실행에 필요한 모든 파일과 설정 값 등을 포함하는 읽기 전용 파일이기 때문에 추가적인 종속성 설치 없이 실행할 수 있습니다.

컨테이너를 생성할때 추가되거나 변경되는 값은 컨테이너에 저장되어 이미지는 언제나 초기 상태를 유지하여 컨테이너가 수정되거나 삭제되도 이미지에 아무런 영향이 없습니다.

도커 레이어(Docker Layer)

이미지 용량은 프로그램이 실행에 필요한 모든 파일과 설정 값을 포함하기 때문에 GB가 넘는 용량을 가지는 경우가 많습니다. 이미지 버전이 업데이트 될때마다 GB 단위로 다운로드를 한다면 비효율적일 수 밖에 없습니다.

 

도커는 이런 문제를 해결하기 위해 레이어(Layer)라는 개념을 사용합니다.

레이어(Layer)는 이미지 간 공유가 가능하고 업데이트 시 기존 이미지에 새로운 레이어만 추가하면 되므로 효율적인 관리가 가능합니다. 컨테이너에서도 추가되거나 변경되는 값도 레이어로 저장하여 최소한의 용량만 사용하게 됩니다.

정리

배포 프로세스는 도커의 등장으로 큰 변화를 가져왔습니다. 서버 증설과 가상 머신 사용 간 딜레마를 해결하여 마이크로 서비스 아키텍쳐의 활성화를 이끌고 있는 만큼 도커의 가능성은 다양하다고 생각합니다.

지속적으로 관심을 가지고 활용한다면 누군가 발견하지 못한 가능성을 찾을 수 있지 않을까? 생각하며 이 글을 줄일려합니다.

반응형

'Frameworks, Platforms > Docker' 카테고리의 다른 글

도커(Docker) - 도커 컴포즈(Docker Compose)  (0) 2023.02.14
도커(Docker) - 명령어  (0) 2023.02.06
도커(Docker) - 용어  (0) 2023.02.06
Comments