[개발이야기#078] 스팀잇 검색엔진 개발을 해보자 - 리눅스에 Kafka 설치 01
안녕하세요 가야태자 @talkit 입니다.
이번에 프로그램의 설치는 도커라는 놈으로 하기로 했습니다.
도커라는 아이는 일종의 컨테이너입니다.
라고 설명하면 ^^ 돌이 날아 오는게 보입니다. ㅎㅎㅎ
그래서, 도커에 대해서 저도 사용만 해봤지 개념이나 이런건 ^^ 잘 모르니 우리의 친구 Chat GPT에게 물어 보겠습니다.
🚢 1️⃣ 도커(Docker)의 개념
✅ 도커란?
- 도커(Docker) 는 애플리케이션을 컨테이너(Container) 라는 단위로 패키징하고 실행할 수 있도록 해주는 오픈소스 플랫폼입니다.
- 컨테이너는 애플리케이션과 그 실행 환경(라이브러리, 설정 파일 등)을 하나로 묶어 배포할 수 있기 때문에, 개발부터 배포까지 환경 차이로 인한 문제를 최소화할 수 있습니다.
- 도커는 컨테이너 기술을 누구나 쉽게 쓸 수 있도록 도와주는 표준 도구라고 볼 수 있어요.
✅ 도커의 핵심 특징
- 가벼움: 가상 머신보다 리소스를 적게 사용
- 빠른 배포: 컨테이너 이미지를 만들고 실행하는 시간이 매우 짧음
- 이식성: 어디서나 동일한 환경으로 실행 가능 (로컬 PC, 테스트 서버, 클라우드 등)
- 확장성: 쿠버네티스(Kubernetes) 같은 오케스트레이션 도구와 결합하여 대규모 서비스를 유연하게 확장 가능
💡 2️⃣ 도커와 가상 머신(VM)의 차이
구분 | 도커 (컨테이너) | 가상 머신 (VM) |
---|---|---|
아키텍처 | 호스트 OS 위에 컨테이너 엔진(Docker Daemon) 으로 직접 실행 | 하이퍼바이저(VMware, VirtualBox 등)를 통해 게스트 OS를 가상화하여 실행 |
OS 구조 | 호스트 커널을 공유, 커널 레벨 가상화 | 독립적인 OS(게스트 OS) 포함 |
리소스 효율 | 가벼움 (MB~GB 단위) | 상대적으로 무거움 (GB 단위) |
부팅 속도 | 매우 빠름 (초 단위) | 느림 (분 단위) |
격리 수준 | 프로세스 수준 격리 (Namespace, Cgroups) | 완전한 OS 수준 격리 |
주요 사용 사례 | 마이크로서비스, CI/CD, 테스트 | 다양한 OS 테스트, 완전한 시스템 시뮬레이션 |
✅ 핵심 요약:
컨테이너는 OS 커널을 공유하여 빠르고 가볍게 실행되며,
가상 머신은 완전히 분리된 OS를 포함하기 때문에 무겁고 느리지만 보안 격리가 강력합니다.
3️⃣ 도커(Docker)와 Podman 비교
구분 | Docker | Podman |
---|---|---|
아키텍처 | 클라이언트-서버 구조: Docker Daemon(백그라운드 서비스)이 컨테이너를 관리 | Daemonless 구조: Podman은 데몬 없이 직접 실행 (rootless 지원이 강점) |
보안 | 기본적으로 root 권한으로 실행 → rootless 실행도 가능하나 설정 필요 | 기본적으로 rootless 실행 가능 |
명령어 | docker run , docker build 등 | Docker와 호환되는 명령어: podman run , podman build |
쿠버네티스 연동 | Kubernetes에서 Docker 대신 containerd 사용 (Docker shim은 deprecated) | Podman은 Kubernetes YAML로 내보내기 (podman generate kube ) |
사용자 | Docker 사용자에게 친숙 | 보안과 데몬리스 환경을 선호하는 리눅스 사용자에게 인기 |
✅ 핵심 요약:
Podman은 Docker 명령어와 거의 동일하지만 데몬이 없고 rootless 실행에 최적화되어 있어 보안 측면에서 더 안전한 선택지로 평가됩니다.
☸️ 4️⃣ 도커(Docker)와 쿠버네티스(Kubernetes) 컨테이너의 차이
많이 혼동되지만, 사실 Docker와 Kubernetes는 경쟁 관계가 아니라 상호보완 관계입니다.
구분 | Docker | Kubernetes |
---|---|---|
역할 | 컨테이너를 만들고 실행하는 도구 (컨테이너 런타임) | 컨테이너들을 자동으로 배포·스케일·관리·복구하는 오케스트레이터 |
컨테이너 런타임 | Docker Engine 사용 | Docker → containerd/cri-o 등으로 전환됨 |
스케일링 | 단일 서버에서 수동으로 관리 | 다수의 노드에서 클러스터 관리, 자동 스케일링, self-healing |
예시 | docker run nginx | kubectl apply -f deployment.yaml |
✅ 핵심 요약:
- Docker는 컨테이너를 하나하나 실행.
- Kubernetes는 수백~수천 개의 컨테이너를 자동으로 관리.
- 최근 Kubernetes는 Docker 대신 containerd 같은 경량 런타임을 직접 사용하며 Docker shim은 deprecated 됨.
✍️ 한 줄 정리
☁️ Docker는 컨테이너를 만드는 도구, Kubernetes는 그 컨테이너들을 대규모로 자동으로 운영하는 도구!
Podman은 Docker와 비슷한 역할을 하지만 데몬이 없고 보안적으로 유리하다!
가상 머신은 컨테이너보다 무겁지만 OS까지 완전 분리해준다!
위와 같이 도커에 대해서 설명을 잘 해줬습니다.
윈도우즈에서 VM은 컴퓨터가 여러대 없으니까 사용했습니다.
앞으로 계획은 2대를 더 만들 계획입니다.
일단 한대에 다 설치하고 확장하는 식으로요.
오늘은 도커에 대해서 조금 알아 보았습니다.
다음에는 도커를 우분투에 도커를 설치해보겠습니다.
오늘도 이만 줄입니다.
감사합니다.
Posted through the ECblog app (https://blog.etain.club)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
아~ 그러면 우분투랑 도커를 준비해야겠군요! ^^
우분투는 잘 설치하시고 ^^
도커는 내일 설치기를 작성할 예정입니다.
감사합니다.