Infra/Docker(도커)

Docker - 도커란

민돌v 2023. 11. 7. 11:15

 

 

 

도커란

도커(Docker)는 컨테이너 가상화 기술 중 제일 잘나가는(?) 기술입니다.

도커는 프로세스 격리 기술들을 사용해 컨테이너를 생성하고 관리하기 위한 도구입니다. 

 

쉽게 말하면, 한 컴퓨터(물리적 자원)안에서 여러개의 시스템과 환결설정들을 충돌하지 않고 동시에 사용할 수 있도록 격리시켜서 실행하는 프로그램입니다.

 

도커는 별도의 개별적인 개발환경을 구성할 수 있는 컨테이너를 구축하고 관리할 수 있는 도구이며
컨테이너는, 공유되거나 재생성 복사 혹은 그자체로의 배포까지 가능한 상당히 편리한 개발도구로써 사용할 수 있습니다.
(내가 원하는대로 구성하고 빌려주고, 사용할 수 있는 피크닉 박스와 유사 개념)

 

 

도커 컨테이너

도커의 구조

다시 이해하자면, 도커는 컨테이너를 관리하는 플랫폼 도구입니다.

컨테이너는 프로세스 격리 기술입니다.

 

도커는 이러한 컨테이너를 "이미지"라는 일련의 틀, 프레임을 기반으로 구축합니다.

이 "이미지"를 사용자가 어떻게 구성하는냐에 따라 사용자화된 개발 환경을 구축할 수 있습니다.

 

같은 의미로 "이미지"만 있다면 어떤 개발 배포환경이든 원하는 "개발환경(컨테이너)"를 손쉽게 구축할 수 있습니다. 

도커-이미지-컨테이너

 

 

VM(Virtual OS) 과 Docker의 차이

그렇다면 가상 환경(vm)과 Docker의 차이점은 무엇일까

 

✔️ Virtual Machines

물리적 자원(한대의 피씨(os))에서 충돌이나는 프로그램과 환경설정을 돌려야하는 상황이라면, Vitrual Machine 을 이용해 새로운 OS를 깔아 자원을 나누어 사용을 할 수도 있습니다.

 

기존의 가상화 방식은 주로 OS를 가상화하였습니다.

우리에게 익숙한 VMware나 VirtualBox같은 가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식입니다.

 

📌 하지만, 가상화 방식에는 전가상화, 반가상화가 있는 추가적인 OS를 실제 물리적 자원(Your Operating System)에 설치하여 가상화하는 방법이기때문에, 메모리, CPU, 하드 드라이브의 공간에 대한 낭비와 성능상의 문제가 있을 수 밖에 없습니다.

 

자원을 점유하는 VM 의 구조

VM 의 단점

  1. 자원의 중복 복제, 즉 낭비되는 공간 발생
    (ex. 복수의 vm 에서 동일한 linux 환경을 사용한다고 하더라도 각각 개별환경마다 동일한 linux 를 깔아야한다.)
  2. 호스트 시스템 위에 추가 시스템이 실행되고 있기 때문에 성능저하를 유발한다.
  3. 공유할 수 있는 단일 구성 파일이 없기 때문에, 재생산 및 공유가 자유롭지 않다.

 

 


 

✔️ Docker

도커는 이러한 vm의 단점들을 대부분 극복하기 위해 나온 컨테이너 격리 시스템입니다.

 

도커의 장점

  1. 도커는 하나의 OS에 몆 대의 머신을 설치하지 않습니다.
    • VM은 Host OS 에 복수개의 별도 GuestOS 를 받아야하지만,
    • Docker 는 HostOS에 Docker 가 있다면 HostOS에 Built-in 된 내장 컨테이너, 혹은 Docker 를 지원하는 VM 의 내장컨테이너를 활용하여 Docker Engine 이라는 도구만을 실행시킵니다.
  2. 도커 엔진은 하나의 도구(vm에 비해 가벼움)에 불과하며, 여러개의 컨테이너로 분리될 수 있습니다.
  3. 각각의 컨테이너에는, 어플리케이션의 실행에 관련한 것만이 존재하고 OS 혹은 물리자원 실행에 필요한 도구들이 존재하지 않습니다.
    • 도커 엔진은 프로그램(프로세스)이기 때문에 Host OS의 자원을 점유하지않고 필요할 때 공유 (메모리 사용)
  4. 컨테이너는 구성파일이 존재하며 (이미지) 이를 통해 컨테이너가 어떤 목적으로 구성되었는지 설명할 수 있고, 쉽게 공유 or 배포할 수 있습니다.

 

 

 

 

가상 머신과 도커

 

 

다음 포스팅에서는  Docker 의 실질적인 개념인
Docker 컨테이너와 Docker 이미지에대해 다루어보았습니다. 
https://thalals.tistory.com/240?category=522348
 

Docker 이미지 & 컨테이너 이해하고 사용하기

[Infra/Docker(도커)] - Docker - 도커란 이전 글에서 Docker의 개념에대해 살짝 정리해보았습니다. 이번 글에서는 Docker 실질적으로 사용하기위한 개념인 컨테이너와, 이미지에 대해 학습 정리를 하고자

thalals.tistory.com


참고