Server/Docker

[Docker] Docker 란? #1

coxfactor-Tech 2024. 7. 31. 12:30

"Docker"  는 애플리케이션을 빠르고 쉽게 테스트하고 배포할 수 있도록 도와주는 오픈 소스 플랫폼입니다. Docker는 컨테이너(Container)라는 기술을 사용하여 애플리케이션과 필요한 파일들을 하나로 묶어 실행할 수 있게 해줍니다. 이는 개발 환경과 배포 환경을 일관성 있게 보장하여 CI/CD(지속적 통합 및 지속적 배포)를 구현하는 데 유용합니다.

Docker의 장점

이식성
컨테이너는 애플리케이션과 모든 종속성을 포함하여 어디서나 동일하게 실행될 수 있도록 합니다. 이는 개발자가 로컬 환경에서 만든 애플리케이션이 다른 서버나 환경에서도 동일하게 작동하도록 보장합니다.

효율성
컨테이너는 운영체제의 커널을 공유하기 때문에 가상 머신보다 훨씬 가볍고 빠릅니다. 이는 자원의 효율적인 사용을 가능하게 합니다.

쉽고 빠른 배포
Docker를 사용하면 애플리케이션을 컨테이너 이미지로 패키징하여 쉽게 배포할 수 있습니다. 이미지로 만들어진 애플리케이션은 어디서나 빠르게 실행될 수 있습니다.

일관성
Docker는 개발 환경과 배포 환경의 일관성을 보장합니다. 이는 "내 컴퓨터에서는 작동하는데, 서버에서는 안 된다"와 같은 문제를 줄여줍니다.

Docker Logo

 

 

가상 머신(Virtual Machines) vs Docker(Containers) 

 

 

항목 가상머신 (Virtual Machines) 컨테이너 (Containers)
격리 수준 독립적인 OS와 함께 동작하여
완벽한 격리 제공
호스트 OS를 공유하며
프로세스 수준에서 격리
부팅 속도 느림
(운영 체제를 포함하여 부팅)
매우 빠름
(거의 즉시 실행)
자원 효율성 불필요한 자원 낭비 가능 자원 효율적 사용
애플리케이션 분리 애플리케이션 프레임워크가
호스트 시스템과 분리
컨테이너에 의존성 있는 애플리케이션 서비스 및 라이브러리를 포함
기능 지원 라이브 마이그레이션 등 다양한 기능 지원 기본적인 네트워크 인터페이스 및 프로세스 관리 제공
파일 시스템 VM은 독립적인 파일 시스템 보유 각 컨테이너는 독립적인 파일 시스템 보유
운영체제 VM이 자체 운영체제 포함 호스트 운영체제를 공유
네트워크 인터페이스 VM이 자체 네트워크 인터페이스 보유 각 컨테이너는 eth0 네트워크 인터페이스 및 PID 0(루트 프로세스) 가짐
사용 사례 완벽한 격리가 필요하고 특정 OS 환경이 요구되는 경우 빠른 배포와 효율적인 자원 사용이 필요한 경우





감사합니다.