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 컨테이너 | 가상 머신 |
---|---|
운영 체제에 미치는 영향이 적고, 매우 빠르며, 디스크 공간 사용이 최소화됨 | 운영 체제에 미치는 영향이 크고, 느리며, 디스크 공간 사용이 많음 |
공유, 재구축 및 배포가 용이함 | 공유, 재구축 및 배포가 어려울 수 있음 |
애플리케이션의 코드, 라이브러리 및 기타 종속 구성 요소를 포함하는 소프트웨어 코드 패키지 | 동일한 호스트 운영 체제에서 고유한 개별 운영 체제가 실행되는 여러 가상 머신을 보유 |
둘의 차이점을 요약하면:
• 컨테이너는 애플리케이션 수준에서 격리되어 경량화되어 있으며, 여러 개의 컨테이너가 동일한 운영체제를 공유합니다.
• 가상머신은 하드웨어 수준에서 격리되어 독립적인 운영체제를 갖고, 더 많은 자원을 소모합니다.
그렇다면 가상머신은 언제사용할까 ?
-
서로 다른 운영 체제 환경에서 작업해야 할 때
e.g
“Windows와 Linux 환경에서 동시에 다양한 애플리케이션을 실행하여 서로 다른 OS를 독립적으로 운영할 때.” -
고립된 테스트 환경이 필요할 때:
e.g
“새로운 소프트웨어 버전이나 보안 패치를 테스트하면서 호스트 시스템에 영향을 미치지 않도록 격리된 환경을 제공할 때.” -
하드웨어 가상화가 필요한 경우:
e.g
“GPU를 활용한 AI 모델 학습이나 하드웨어 가속이 필요한 작업을 다양한 운영 체제에서 테스트하고 실행할 때.”
etc...
Docker 설치 버그 - 2025
현재 Docker를 설치하면 아래와 같은 팝업이 무한정 반복되는 것을 확인 할 수 있습니다.
많은 솔루션이 제시되었지만 제 맥북 스펙에는 아래와 같은 솔루션을 통해 해결했습니다.
항목 | 사양 |
---|---|
모델 | MacBook Air |
화면 크기 | 15-inch |
칩 | Apple M2 |
메모리 | 24 GB |
운영체제 | macOS Sequoia 15.1 |