Docker
애플리케이션을 쉽게 만들고, 테스트하고, 배포할 수 있게 도와주는 소프트웨어 플랫폼
- 애플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 실행 가능
- Docker 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 포함
→ 코드, 런타임, 시스템 도구, 시스템 라이브러리 등
<주요 특징>
- 컨테이너화 : 애플리케이션과 필요한 모든 것을 하나의 패키지로 묶어 어디서든 실행할 수 있음.
- 경량 : Docker는 운영 체제의 커널을 공유하므로, 가상 머신보다 훨씬 가볍고 빠르게 실행됨.
- 이식성 : Docker 컨테이너는 어디서든 동일하게 실행됨.
예) 개발자의 컴퓨터에서 테스트 서버, 운영 서버까지 동일하게 동작함. - 확장성 : Docker를 사용하면 여러 개의 컨테이너를 효율적으로 관리하고 쉽게 확장할 수 있음.
1) Image
애플리케이션과 그 실행에 필요한 모든 것을 포함하는 읽기 전용 플랫폼
- 코드, 런타임, 라이브러리, 환경 변수, 구성 파일 등이 포함됨.
- 이미지는 컨테이너를 생성하기 위한 청사진 역할을 함.
2) Container
이미지를 실행하여 동작하는 애플리케이션 인스턴스
- Docker 이미지를 실행한 상태
- 이미지가 정적인 템플릿이라면 컨테이너는 실제로 애플리케이션이 실행되는 동적인 환경
- 컨테이너는 격리된 공간에서 애플리케이션을 실행하며, 필요한 모든 의존성을 포함함.
- 하나의 시스템에서 여러 개의 컨테이너를 독립적으로 실행할 수 있음.
3) Dockerfile
이미지를 생성하기 위한 명령어가 담긴 스크립트 파일 (대문자로 시작, 확장자 없음)
- Dockerfile로 이미지 생성 과정을 자동화하고 일관되게 만들 수 있음.
Docker는 언제 사용할까?
1) 일관된 개발 환경이 필요할 때
- 개발, 테스트, 운영 환경이 다를 때 발생하는 문제를 피하고자 할 때 사용하면 좋음.
- 모든 환경에서 동일한 컨테이너를 실행할 수 있어 환경 차이로 인한 문제를 줄일 수 있음.
2) 애플리케이션을 빠르게 배포하고 싶을 때
- 애플리케이션을 빠르고 쉽게 배포할 수 있음.
- Docker 이미지를 빌드하고 이를 컨테이너로 실행하면, 필요한 모든 구성 요소가 포함되어 있어
별도의 설치 과정 없이 바로 실행할 수 있음.
3) 마이크로서비스 아키텍처를 도입할 때
- Docker는 각 서비스가 독립적으로 배포되고 실행될 수 있어,
여러 개의 컨테이너를 통해 다양한 서비스를 쉽게 관리할 수 있어 MSA와 잘 맞음.
4) CI/CD 파이프라인을 구축할 때
- 코드를 변경할 때 마다 자동으로 빌드, 테스트, 배포할 수 있도록 설정할 수 있어,
개발 주기를 단축하고 배포의 신뢰성을 높일 수 있음.
5) 리소스 효율성을 높이고 싶을 때
- Docker 컨테이너는 가상머신보다 적은 리소스를 사용함.
- 운영체제의 커널을 공유하므로 더 많은 애플리케이션을 동일한 하드웨어에서 실행할 수 있음.
6) 애플리케이션 격리가 필요할 때
- 여러 애플리케이션을 독립적으로 실행하고자 할 때
- Docker 사용시 각 컨테이너가 서로 격리되어 실행됨. 이를 통해 애플리케이션 간의 충돌을 방지하고 보안을 강화할 수 있음.
7) 쉽게 스케일링하고 싶을 때
- Docker를 사용하면 컨테이너 기반의 애플리케이션을 쉽게 확장할 수 있음.
- 필요한 만큼 컨테이너를 추가하여 수평 확장이 가능하며, 오케스트레이션 도구와 결합해 자동 확장도 가능함.
8) Kubernetes와 함께 사용하고자 할 때
- Kubernetes : 컨테이너 오케스트레이션 도구, 다수의 Docker 컨테이너를 관리하고 자동 배포, 확장, 운영을 지원함.
- Docker 컨테이너를 쿠버네티스 클러스터에 배포하면, 애플리케이션의 가용성과 확장성을 높일 수 있음.
728x90
'TIL' 카테고리의 다른 글
TIL16. Redis (1) 특징, 설치, 타입별 명령어 (0) | 2025.03.05 |
---|---|
TIL15. GitLab CI/CD + Github Actions (0) | 2025.03.04 |
TIL12. 1차 배달 플랫폼 프로젝트 회고 (0) | 2025.02.26 |
TIL11. 테스트의 늪 (0) | 2025.02.25 |
TIL10. 리팩토링, 카테고리별 가게 목록 조회, soft-delete (1) | 2025.02.24 |