Docker: 서버를 더 빠르고 가볍게 만드는 마법 같은 도구 🚀
Docker란?
Docker는 리눅스의 Container기술을 이용하여 애플리케이션을 격리된 환경에서 실행할 수 있도록 도와주는 도구다. 이걸 사용하면 내가 만든 프로그램이 어디서든 똑같이 동작한다.
예를 들어, 내 컴퓨터에서는 잘 돌아가는데 서버에서는 오류가 나는 경험 해본 적 있지 않은가? Docker는 이런 문제를 깔끔하게 해결해준다.
컨테이너(Container)란?
컨테이너는 일종의 독립된 박스라고 생각하면 쉽다. 이 박스 안에는 프로그램, 라이브러리, 환경설정 파일까지 내가 원하는 걸 다 담을 수 있다. 덕분에 컨테이너가 돌아가는 곳이라면 어디서든 똑같은 환경에서 프로그램을 실행할 수 있다.
과거에는 **가상머신(VM)**을 사용했지만, 컨테이너는 훨씬 더 가볍고 빠르다.
도커와 가상머신의 차이
- 가상머신은 하드웨어 수준에서 완전히 분리된 독립 시스템을 만든다. 반면,
- Docker 컨테이너는 호스트 OS의 커널을 공유하면서도 서로 격리된 독립 공간처럼 동작한다.
컨테이너의 장점 ✨
- 빠르다: 몇 초 만에 실행된다.
- 가볍다: 불필요한 OS 없이 필요한 것만 딱 담는다.
- 일관성: 개발 환경, 테스트 환경, 실제 배포 환경이 똑같아진다.
- 확장성: 컨테이너 여러 개를 쉽게 띄우고 관리할 수 있다.
Docker랑 비슷한 기술들
- containerd: Docker의 핵심 엔진.
- cri-o: Kubernetes(쿠버네티스)에서 사용하기 좋은 경량 컨테이너 런타임.
Kubernetes(쿠버네티스)란?
컨테이너 하나, 두 개는 직접 관리할 수 있지만, 수백~수천 개의 컨테이너를 관리하는 건 쉽지 않다. **Kubernetes(K8S)**는 이런 대규모 컨테이너들을 자동으로 관리해주는 도구다.
예를 들어:
- 컨테이너가 갑자기 죽었다? 👉 K8S가 알아서 다시 띄운다.
- 트래픽이 갑자기 몰렸다? 👉 K8S가 컨테이너를 자동으로 추가한다.
- 서비스 배포? 👉 컨테이너만 교체하면 끝.
그래서 요즘 Kubernetes는 사실상 컨테이너 운영의 표준처럼 쓰이고 있다.
Docker와 Kubernetes의 차이
- Docker: 컨테이너를 만드는 도구.
- Kubernetes: 컨테이너를 관리하는 도구.
쉽게 말하면, Docker는 요리사, Kubernetes는 주방장 같은 역할이다.
Docker가 음식을 만든다면, Kubernetes는 이 음식을 얼마나 많이 만들지, 요리사가 아프면 다른 요리사를 불러올지 등을 관리해준다.
결론
Docker는 개발자가 빠르고 쉽게 프로그램을 실행할 수 있도록 만들어준다. 그리고 Kubernetes와 함께 사용하면, 대규모 서비스를 안정적이고 유연하게 운영할 수 있다.
'Programming > DevOps' 카테고리의 다른 글
[DevOps]📌 Ubuntu 22.04에서 Kubernetes 클러스터 환경 세팅 (마스터 1대 + 워커 2대) (0) | 2025.03.12 |
---|