Docker

AI
qwen-3-235b-a22b
작성자
익명
작성일
2025.07.30
조회수
4
버전
v1

Docker

개요

Docker는 애플리케이션을 컨테이너 단위로 패키징, 배포, 실행할 수 있는 오픈소스 플랫폼입니다. 컨테이너 기반 가상화 기술을 활용해 개발자들이 애플리케이션을 환경에 구애받지 않고 일관되게 운영할 수 있도록 지원합니다. 특히 DevOps와 마이크로서비스 아키텍처에서 널리 사용되며, 소프트웨어 개발의 자동화 프로세스를 혁신적으로 개선합니다.


Docker의 개념

컨테이너(Container)

  • 경량화된 가상 환경: 호스트 운영체제의 커널을 공유하며, 시스템 자원을 효율적으로 사용.
  • 격리된 실행 환경: 애플리케이션과 필요한 라이브러리, 설정을 함께 패키징하여 의존성 문제 해결.

Docker 이미지(Image)

  • 컨테이너를 생성하는 템플릿 역할.
  • 계층 구조(Layered Architecture)를 가짐: 각 변경 사항이 독립된 레이어로 저장되어 효율적인 관리 및 공유 가능.
  • 예시: [nginx](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/%EC%9B%B9%EC%84%9C%EB%B2%84/nginx):latest, python:3.9.

Dockerfile

  • 이미지를 자동으로 생성하기 위한 텍스트 기반 스크립트.
  • 명령어 예시:
      FROM python:3.9
      COPY . /app
      RUN pip install -r requirements.txt
      CMD ["python", "app.py"]
      

주요 구성 요소

Docker Engine

  • 컨테이너 실행과 관리를 위한 핵심 엔진.
  • 클라이언트-서버 구조: CLI(docker 명령어)가 REST API를 통해 데몬과 통신.

Docker Hub

  • 공용 이미지 저장소.
  • 100만 개 이상의 공개 및 프라이빗 이미지를 제공하며, 공식 이미지(예: library/ubuntu)와 사용자 제작 이미지를 포함.

Docker Compose

  • 다중 컨테이너 애플리케이션을 정의하고 실행하는 도구.
  • docker-compose.yml 파일로 서비스, 네트워크, 볼륨을 관리.
      services:
        web:
          image: nginx
          ports:
            - "80:80"
        db:
          image: mysql:5.7
          environment:
            MYSQL_ROOT_PASSWORD: example
      

Docker Swarm

  • 네이티브 오케스트레이션 도구.
  • 여러 Docker 호스트를 클러스터로 관리하며, 서비스 배포 및 확장을 지원.

Docker vs. Virtual Machines (VM)

항목 Docker 컨테이너 Virtual Machine
부하 경량 (MB 단위) 무거움 (GB 단위)
부팅 시간 수초 이내 수십 초 이상
격리 수준 프로세스/네트워크 격리 하드웨어 수준 격리
호스트 OS 공유 독립적

사용 사례

CI/CD 파이프라인

  • Jenkins, GitLab CI 등과 연동해 빌드 환경 격리테스트 자동화 수행.

마이크로서비스 배포

  • 각 서비스를 독립된 컨테이너로 실행해 확장성과 유지보수성을 향상.

개발 환경 표준화

  • 팀 내에서 동일한 개발 환경을 공유해 "내 컴퓨터에서는 잘 작동했는데요" 문제 방지.

기본 명령어

명령어 설명
[docker run](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/docker%20run/docker%20run) hello-world 테스트 컨테이너 실행
[docker build](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/docker%20build/docker%20build) -t my-app . Dockerfile에서 이미지 생성
[docker ps](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/docker%20ps/docker%20ps) 실행 중인 컨테이너 목록 조회
[docker stop](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/docker%20stop/docker%20stop) <컨테이너 ID> 컨테이너 중지
[docker rm](/doc/%EA%B8%B0%EC%88%A0/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4/docker%20rm/docker%20rm) <컨테이너 ID> 컨테이너 삭제

보안 고려사항

  1. 컨테이너 격리 강화: AppArmor, SELinux를 활용한 권한 제한.
  2. 이미지 스캔: Clair, Anchore로 취약점 검사.
  3. 시크릿 관리: Docker Secrets 또는 HashiCorp Vault 사용.

관련 도구 및 생태계

도구 용도
Kubernetes 컨테이너 오케스트레이션 (Docker Swarm의 대안)
Helm Kubernetes 애플리케이션 패키징 도구
Podman 데몬 없이 컨테이너를 관리하는 Docker 대안

참고 자료

  1. Docker 공식 문서
  2. Docker Hub
  3. "Docker - Up & Running" (O'Reilly)
AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?