Skip to main content

Overview

개요

Docker란 ?

Docker is a platform designed to help developers build, share, and run container applications.

Docker는 개발자가 컨테이너 애플리케이션을 빌드, 공유 및 실행할 수 있도록 도와주는 플랫폼(도구) 입니다.

컨테이너란?

  • 애플리케이션 실행에 필요한 모든 것(코드, 런타임, 시스템 도구, 라이브러리)을 하나로 묶은 패키지
  • 어떤 환경에서든 동일하게 실행되는 독립적인 실행 단위

컨테이너를 사용하는 이유 ?

컨테이너를 사용하는 이유는 여러 가지가 있지만, 가장 중요한 이유 중 하나는 환경의 일관성을 유지할 수 있기 때문입니다.

e.g await와 같은 최신 JavaScript 기능은 특정 Node.js 14 버전부터 지원됩니다. 노드 버전을 통일하지 않으면 문제가 발생하겠죠.

컨테이너를 사용하면 모든 개발자가 동일한 환경에서 작업할 수 있어 이러한 문제를 방지할 수 있습니다. 이는 "내 컴퓨터에서는 잘 되는데..."라는 문제를 해결하고, 개발, 테스트, 프로덕션 환경에서 동일한 실행 결과를 보장합니다.

그러면 가상머신으로는 ?

위와 같은 상황이라면 가상머신으로도 대체할 수 있는게 아닐까요 ? 그에 대한 답은 아래 비교를 보면 알 수 있습니다.

컨테이너와 가상 머신 비교

Docker 컨테이너가상 머신
운영 체제에 미치는 영향이 적고, 매우 빠르며, 디스크 공간 사용이 최소화됨운영 체제에 미치는 영향이 크고, 느리며, 디스크 공간 사용이 많음
공유, 재구축 및 배포가 용이함공유, 재구축 및 배포가 어려울 수 있음
애플리케이션의 코드, 라이브러리 및 기타 종속 구성 요소를 포함하는 소프트웨어 코드 패키지동일한 호스트 운영 체제에서 고유한 개별 운영 체제가 실행되는 여러 가상 머신을 보유

둘의 차이점을 요약하면:
• 컨테이너는 애플리케이션 수준에서 격리되어 경량화되어 있으며, 여러 개의 컨테이너가 동일한 운영체제를 공유합니다.
• 가상머신은 하드웨어 수준에서 격리되어 독립적인 운영체제를 갖고, 더 많은 자원을 소모합니다.

그렇다면 가상머신은 언제사용할까 ?

  1. 서로 다른 운영 체제 환경에서 작업해야 할 때
    e.g “Windows와 Linux 환경에서 동시에 다양한 애플리케이션을 실행하여 서로 다른 OS를 독립적으로 운영할 때.”

  2. 고립된 테스트 환경이 필요할 때:
    e.g “새로운 소프트웨어 버전이나 보안 패치를 테스트하면서 호스트 시스템에 영향을 미치지 않도록 격리된 환경을 제공할 때.”

  3. 하드웨어 가상화가 필요한 경우:
    e.g “GPU를 활용한 AI 모델 학습이나 하드웨어 가속이 필요한 작업을 다양한 운영 체제에서 테스트하고 실행할 때.”

etc...

Docker 설치 버그 - 2025

현재 Docker를 설치하면 아래와 같은 팝업이 무한정 반복되는 것을 확인 할 수 있습니다.

docker-installtion-fail

많은 솔루션이 제시되었지만 제 맥북 스펙에는 아래와 같은 솔루션을 통해 해결했습니다.

항목사양
모델MacBook Air
화면 크기15-inch
Apple M2
메모리24 GB
운영체제macOS Sequoia 15.1