[개발이야기#078] 스팀잇 검색엔진 개발을 해보자 - 리눅스에 Kafka 설치 01

in #kr2 days ago

안녕하세요 가야태자 @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 비교


구분DockerPodman
아키텍처클라이언트-서버 구조: Docker Daemon(백그라운드 서비스)이 컨테이너를 관리Daemonless 구조: Podman은 데몬 없이 직접 실행 (rootless 지원이 강점)
보안기본적으로 root 권한으로 실행 → rootless 실행도 가능하나 설정 필요기본적으로 rootless 실행 가능
명령어docker run, docker buildDocker와 호환되는 명령어: 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는 경쟁 관계가 아니라 상호보완 관계입니다.

구분DockerKubernetes
역할컨테이너를 만들고 실행하는 도구 (컨테이너 런타임)컨테이너들을 자동으로 배포·스케일·관리·복구하는 오케스트레이터
컨테이너 런타임Docker Engine 사용Docker → containerd/cri-o 등으로 전환됨
스케일링단일 서버에서 수동으로 관리다수의 노드에서 클러스터 관리, 자동 스케일링, self-healing
예시docker run nginxkubectl 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)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

아~ 그러면 우분투랑 도커를 준비해야겠군요! ^^

우분투는 잘 설치하시고 ^^
도커는 내일 설치기를 작성할 예정입니다.
감사합니다.