Docker

도커란?

Nonchrono 2025. 1. 22. 12:54

Docker란? 

도커는 소프트웨어를 실행하기 위한 컨테이너를 만들고 관리할 수 있게 도와주는 도구이다.

 

 

 

컨테이너란?

컨테이너는 소프트웨어를 실행하는 데에 필요한 모든 것을 하나로 묶은 표준화된 소프트웨어 단위이다.

쉽게 말해, 컨테이너에는 코드뿐만 아니라, 코드를 실행하는 데 필요한 환경(예: 라이브러리, 종속성, 도구 등)이 모두 포함되어 있다.

 

예시:

Node.js 애플리케이션을 도커 컨테이너로 만든다면?

해당 컨테이너에는

  • 애플리케이션 소스 코드
  • Node.js 런타임 (코드를 실행하기 위한 실행 환경)
  • 기타 도구

결과적으로 Node.js 소스 코드와 동일한 환경을 사용하므로 항상 같은 동작과 결과를 보장할 수 있다.

 

 

 

선박의 컨테이너와 도커 컨테이너

컨테이너라는 개념을 선박에 실리는 화물 컨테이너로 비유하면 이해에 도움이 될 것 같다.

도커 컨테이너의 경우에는

  • 선박 컨테이너는 다양한 상품을 표준화된 상자에 넣어 보관하고 운송한다.
  • 각 컨테이너는 서로 완전히 격리되어 있으며 냉장이 필요한 상품이 있다면 컨테이너에 냉장 기능을 추가할 수도 있다.
  • 이렇게 표준화된 컨테이너는 어떤 배나 트럭에서도 처리할 수 있어 어디로든 쉽게 이동이 가능하다.

도커 컨테이너의 경우에는

  • 하나의 컨테이너에 소프트웨어와 실행 환경을 포함해 보관한다.
  • 컨테이너 내부는 완전히 격리되어 있으므로 외부 환경에 영향을 받지 않고 동일한 조건에서 실행된다.
  • 도커가 실행되는 곳이라면 어디서든 이 컨테이너를 가져다 사용할 수 있다.

 

 

 

도커를 사용해야하는 이유

도커를 사용하면 같은 환경에서 항상 같은 애플리케이션을 실행할 수 있다.

  1. 호환성 문제를 걱정할 필요가 없다.
    • 도커를 사용하면, 애플리케이션 실행 환경을 컨테이너에 포함시킬 수 있습니다.
    • 따라서 로컬, 서버, 팀원 간에 환경 차이로 인한 문제가 발생하지 않는다.
  2. 다른 곳에 배포하더라도 같은 환경임이 보장된다.
    • 로컬에서 개발한 코드가 서버에서 동작하지 않는 문제를 방지할 수 있다.
    • 팀원 간 개발 환경 차이로 인한 문제가 발생하지 않는다.
  3. 가상머신에 비해 실행 속도가 가볍고 빠르다.
    • 가상머신(VM)에 비해 빠르고 가볍다.
    • 불필요한 리소스 소모 없이 효율적으로 컨테이너를 실행할 수 있다.

 

 

 

가상머신 vs 도커 컨테이너

가상머신(VM)이란?

하나의 물리적인 컴퓨터(호스트) 위에 소프트웨어적으로 또 다른 컴퓨터 환경을 구현한 것이다.

쉽게 말해서, 하나의 컴퓨터 안에 여러 대의 컴퓨터가 있는 것과 마찬가지이다.

 

가상머신은 호스트 OS와는 별개로 운영 체제를 갖추고 있고 필요한 런타임이나 기타 도구들도 설치할 수 있기에 도커 컨테이너처럼 독립적인 환경을 제공한다. 언뜻 보면 비슷해보이는 가상머신과 도커 컨테이너의 특징을 비교해보자.

 

 

가상머신 VS 도커 컨테이너

구분 가상머신(VM) 도커 컨테이너
기반 기술 하드웨어 가상화 운영 체제(OS) 가상화
운영 체제(OS) 각 가상머신이 별도의 OS를 실행 호스트 OS를 공유
하드웨어 요구사항 가상머신마다 CPU, 메모리, 디스크 자원을 따로 할당 더 적은 자원을 사용
구성 파일 별도 구성 파일 없이 직접 설치 필요 Dockerfile로 쉽게 구성 가능
성능 느림. 하드웨어 오버헤드 위험이 존재 (전체 OS 실행) 빠름. 가벼운 구조로 최소한의 영향만 미침 (애플리케이션만 실행)
사용 영역 장기적인 테스트나 운영 체제 수준의 테스트 개발과 배포 자동화, 가볍고 빠른 실행 환경이 필요할 때

 

서로 다른 장단점이 있기 때문에 사용 목적과 요구사항에 따라 다르기에 상황에 따라 선택하여 사용하면 된다.

'Docker' 카테고리의 다른 글

도커 이미지와 컨테이너  (0) 2025.01.24