리눅스/리눅스 응용

도커(Docker) 기초 지식

Linuxpia 2025. 8. 16. 02:03
반응형

도커(Docker) 기초 지식 정리

도커(Docker)는 컨테이너(Container) 기술을 이용하여 애플리케이션을 격리된 환경에서 실행할 수 있도록 하는 오픈소스 플랫폼입니다.
전통적인 가상머신(Virtual Machine)보다 가볍고 빠르며, 개발·배포 환경을 통일할 수 있어 DevOps, 클라우드 환경에서 널리 사용됩니다.


1. 도커의 핵심 개념

① 컨테이너(Container)

  • 애플리케이션과 그 실행 환경(라이브러리, 설정 등)을 패키징하여 실행하는 단위
  • 독립적인 네임스페이스(Namespace)Cgroup(Control Group)을 사용해 격리
  • 가상머신과 달리 OS 커널을 공유하므로 가볍고 빠름

② 이미지(Image)

  • 컨테이너 실행을 위한 템플릿
  • 읽기 전용(Read-only) 계층 구조로 되어 있음
  • 예: nginx:latest, python:3.11

③ 도커 허브(Docker Hub)

  • 도커 이미지의 중앙 저장소
  • 예:
  • docker pull nginx

④ 도커 데몬(Docker Daemon)

  • 백그라운드에서 컨테이너와 이미지를 관리하는 서버 프로세스

⑤ 도커 클라이언트(Docker CLI)

  • 사용자가 명령어를 통해 도커 데몬에 요청을 보내는 도구
  • 예: docker run, docker ps

2. 도커의 장점

  • 경량성: VM보다 리소스 사용이 적음
  • 이식성: 개발, 테스트, 운영 환경 간 차이를 줄임
  • 속도: VM 대비 시작 속도가 매우 빠름
  • 버전 관리: 이미지 기반으로 쉽게 롤백 가능
  • 자동화: CI/CD 파이프라인과 연계 용이

3. 도커 vs 가상머신

구분 Docker VM
커널 호스트 OS 커널 공유 독립된 OS 실행
시작 속도 초 단위 분 단위
자원 사용 적음 많음
성능 손실 거의 없음 하이퍼바이저 오버헤드 존재

4. 도커 기본 명령어

# 이미지 다운로드
docker pull ubuntu:20.04

# 컨테이너 실행
docker run -it ubuntu:20.04 /bin/bash

# 실행 중인 컨테이너 목록
docker ps

# 모든 컨테이너 목록(종료 포함)
docker ps -a

# 컨테이너 중지
docker stop <container_id>

# 컨테이너 삭제
docker rm <container_id>

# 이미지 삭제
docker rmi <image_id>

5. 도커 파일(Dockerfile)

  • 이미지를 생성하기 위한 설정 파일
  • 예:
  • FROM python:3.11 WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD ["python", "app.py"]

6. 도커와 네임스페이스 관계

  • 도커는 리눅스 네임스페이스를 이용해 자원을 격리
    • PID → 프로세스 ID 격리
    • NET → 네트워크 환경 격리
    • MNT → 파일 시스템 마운트 격리
    • UTS → 호스트 이름 격리
  • Cgroup을 이용해 CPU, 메모리 등 자원 제한 가능

정리

  • 도커는 컨테이너 기술을 활용한 애플리케이션 실행·배포 플랫폼
  • 핵심 구성: 이미지, 컨테이너, Dockerfile, 도커 허브
  • 장점: 가볍고, 빠르며, 이식성이 뛰어남
  • 리눅스 네임스페이스와 Cgroup이 동작 기반
  • DevOps, 클라우드 환경에서 사실상 표준