정리용/Docker
[Docker] 1.1 Docker 개념
hee-ya07
2025. 2. 21. 17:12
0. 격리를 위한 가상화 (VM vs Container)
:: 환경에 따라 VM or Container로 구분
구분 | VM (Virtual Machine) | Container |
환경 정의 | Guest OS + Bins/Libs + App B | Bins/Libs + App B |
특징 | OS 레벨 독립적 애플리케이션 구동 환경 | Bins/Libs 레벨 독립적 어플리케이션 구동 환경 |
소모 리소스 | 리소스 소모가 크고 느리다. | 리소스 소모가 적어 가볍고 빠르다 |
최대 | 1 OS 내 3 VM 정도 ..? | 1 OS 내 1000 Container 가능 |
- 컨테이너
:: 격리된 공간에서 프로세스가 동작하는 기술 (Isolated Process in Userspace)
1. Docker ?
:: 컨테이너화 기술을 활용한 개발 및 배포 자동화 도구
:: 애플리케이션을 실행할 수 있는 가벼운 환경을 제공 + 의존에 대한 일관성을 제공하여 어디서나 동일한 실행을 보장
:: 애플리케이션을 "컨테이너"라는 가상화된 환경에서 실행 -> OS 의존성을 줄임
- Docker는 Linux Container 구동을 위해 Image 생성
- Docker는 Container를 구동하는 책임을 가짐
1.1 Docker의 구성 -간략
구성 요소 | 설명 |
1) Docker Image | - Docker의 격리 단위 - 실행에 필요한 모든 파일 시스템과 설정을 포함하는 읽기 전용 템플릿 |
2) Dockerfile | - Docker 이미지를 생성하기 위한 스크립트 파일 - 이미지에 포함될 파일, 애플리케이션, 설정 등을 정의 |
3) Docker Container | - 실행 중인 Docker 이미지 - 격리된 실행 환경을 제공하는 동적 상태 |
4) Docker Compose | - 여러 컨테이너를 정의하고 실행할 수 있는 도구 - 여러 서비스를 동시에 관리 |
5) Docker Hub | - Docker 이미지를 공유하고 배포하는 클라우드 기반 플랫폼 |
1.2 Docker의 구성 - 상세
1) Docker Image
- 정의
:: Docker의 격리 단위
:: 컨테이너를 실행할 수 있는 모든 파일 시스템과 설정을 포함하는 읽기 전용 템플릿 - 구성
:: Docker 이미지는 여러 레이어로 구성 -> 이를 바탕으로 컨테이너가 실행
:: Bins/Libs 와 App 집합- App : 구동시킬 앱이 담겨져있다 (예, Spring Boot)
- Bins/Libs : 앱 구동시킬때 필요한 라이브러리, 실행파일, 환경변수
- 관리 주체
:: Docker Hub와 같은 중앙 레지스트리에서 공유하거나, 로컬에서 관리
2) Dockerfile
- 정의
:: Docker 격리 정의 (Instruction)
:: Docker 이미지를 생성하기 위한 스크립트 파일
:: 애플리케이션에 대해 어떤 방식으로 설치될지에 대한 명령어들이 포함 - 역할
:: 이미지 생성 규칙 - 어떤 Bins/Libs 와 어떤 App 을 포장할지
:: 특정 애플리케이션을 실행할 수 있는 재사용 가능한 이미지 생성 가능
3) Docker Container
- 정의
:: Docker 격리 동작
:: 애플리케이션 및 그에 필요한 라이브러리, 구성 파일, 필요한 설정 등이 포함된 격리된 실행 환경
:: 실행 중인 이미지(동적인 상태를 의미) - 역할
:: 운영체제의 가상화를 활용해 애플리케이션을 호스트 OS와 독립적인 환경에서 실행을 지원
4) Docker Compose
- 정의
:: Dockerfile 로 정의한 개별 Docker 이미지 집합
:: 여러 컨테이너를 정의하고 실행할 수 있는 도구 -> 다중 컨테이너 실행 도구 - 역할
:: 여러 개의 서비스를 필요로 하는 애플리케이션을 여러 컨테이너로 구성할 때 유용
:: Multiple Docker 컨테이너 구동
:: Docker-compose.yml 파일을 사용하여 각 서비스의 설정을 정의 및 실행, 중지
5) Docker Engine
- 정의
:: Docker 이미지를 구동 및 관리하기위한 엔진 - 구성
:: API + CLI + Docker Daemon - 역할
:: Docker Engine 위에 Image를 올리고 Run 구동 시 독립적인 Docker Container 실행
6) Docker Hub
:: Docker 이미지를 공유하고 배포하는 클라우드 기반 플랫폼
심화 내용 - 질의
2025.02.21 - [정리용/Docker] - [Docker] 1.1.1 Docker 질문
[Docker] 1.1.1 Docker 질문
*. 심화 내용*. 1 Docker는 왜 항상 Linux 명령어를 사용하나?더보기Docker는 기본적으로 Linux 환경에서의 컨테이너화를 목표로 설계됨=> So, Docker 자체가 Linux의 네이티브 시스템 기능을 사용하여 관리
hee-ya07.tistory.com
참조
ASAC 수업자료