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 |