본문 바로가기
Cloud

[Docker] Docker 란?

by Ahngyuho 2025. 3. 10.

1. Docker 개요

Docker란?

  • 애플리케이션을 격리된 환경(컨테이너)에서 실행할 수 있도록 하는 가상화 기술.
  • 운영 환경을 일관되게 유지하면서 손쉽게 배포 가능.
  • 컨테이너는 가상 머신보다 가볍고 빠르며, 자원 소모가 적음.

Docker의 필요성

  • 운영 환경이 점점 Docker 기반으로 변화.
  • 격리된 환경에서 프로그램을 실행하여 다른 애플리케이션과 충돌 방지.
  • 빠른 배포, 스케일링, 일관된 환경 유지.

2. Docker vs 기타 컨테이너 기술

컨테이너 기술 비교

기술설명

Docker 가장 널리 사용되는 컨테이너 플랫폼
containerd Docker에서 분리된 컨테이너 런타임
CRI-O Kubernetes(K8S)와 함께 사용하는 컨테이너 런타임

컨테이너 vs 가상 머신(VM)

항목가상 머신(VM)컨테이너

실행 속도 느림 (OS 부팅 필요) 빠름 (호스트 OS 공유)
자원 사용량 많음 (각 VM이 OS 포함) 적음 (공유 커널 사용)
격리 수준 강력한 격리 (완전 독립) 프로세스 단위 격리
배포 속도 느림 빠름

3. Docker의 핵심 개념

컨테이너(Container)

  • 격리된 환경에서 프로그램을 실행하는 독립적인 실행 단위.
  • 하나의 컨테이너는 하나의 애플리케이션 실행을 담당.

https://www.youtube.com/watch?v=mSD88FuST80

 

 

컨테이너에 대한 개념을 잘 알수있게 해주는 영상

 

 

이미지(Image)

  • 컨테이너 실행에 필요한 모든 환경을 포함한 파일 시스템 스냅샷.
  • 컨테이너는 이미지를 기반으로 실행됨.

Docker 엔진

  • 컨테이너를 실행하고 관리하는 Docker의 핵심 런타임.

격리의 장점

  • 프로그램이 사용할 자원을 제한 가능.
  • 외부 영향을 차단하여 보안 강화.
  • 컨테이너 내부에서는 지정된 최상위 디렉토리만 접근 가능.

4. Docker의 주요 기능

포트 (Port)

  • 컨테이너 내부 서비스가 외부와 통신할 수 있도록 포트를 매핑.
-p 8080:80 # 호스트 8080 → 컨테이너 80 포트 연결

볼륨 (Volume)

  • 호스트 머신의 특정 폴더를 컨테이너에 연결하여 데이터를 영구 저장.
-v C:/work/data:/app/data # 호스트 폴더를 컨테이너 내부로 마운트
 

환경 변수 (Environment Variables)

  • 컨테이너 실행 시 필요한 환경 변수를 설정.
-e DATABASE_URL=mysql://user:pass@db:3306/mydb

 

5. Docker 실전 예제

1) 기본적인 컨테이너 실행

docker run --name backend -p 8080:8080 -v "C:\work\docker\demo\build\libs\demo-0.0.1-SNAPSHOT.jar:/app.jar" -d openjdk:17-ea-slim-buster java -jar /app.jar

 

설명

  • --name backend → 컨테이너 이름 설정
  • -p 8080:8080 → 포트 매핑 (호스트:컨테이너)
  • -v "C:\work\docker\demo\build\libs\demo-0.0.1-SNAPSHOT.jar:/app.jar" → JAR 파일 마운트
  • -d → 백그라운드 실행

 

 

'Cloud' 카테고리의 다른 글

[ansible] ansible 사용해보기  (0) 2025.03.20
[Docker-compose]  (0) 2025.03.10
Amazon S3  (0) 2025.02.16
aws ec2 Ubuntu의 systemd에 Java application을 Service로 등록  (0) 2023.08.02