반응형
도커(Docker) 기초 지식 정리
도커(Docker)는 컨테이너(Container) 기술을 이용하여 애플리케이션을 격리된 환경에서 실행할 수 있도록 하는 오픈소스 플랫폼입니다.
전통적인 가상머신(Virtual Machine)보다 가볍고 빠르며, 개발·배포 환경을 통일할 수 있어 DevOps, 클라우드 환경에서 널리 사용됩니다.
1. 도커의 핵심 개념
① 컨테이너(Container)
- 애플리케이션과 그 실행 환경(라이브러리, 설정 등)을 패키징하여 실행하는 단위
- 독립적인 네임스페이스(Namespace)와 Cgroup(Control Group)을 사용해 격리
- 가상머신과 달리 OS 커널을 공유하므로 가볍고 빠름
② 이미지(Image)
- 컨테이너 실행을 위한 템플릿
- 읽기 전용(Read-only) 계층 구조로 되어 있음
- 예: nginx:latest, python:3.11
③ 도커 허브(Docker Hub)
- 도커 이미지의 중앙 저장소
- 예:
- docker pull nginx
④ 도커 데몬(Docker Daemon)
- 백그라운드에서 컨테이너와 이미지를 관리하는 서버 프로세스
⑤ 도커 클라이언트(Docker CLI)
- 사용자가 명령어를 통해 도커 데몬에 요청을 보내는 도구
- 예: docker run, docker ps
2. 도커의 장점
- 경량성: VM보다 리소스 사용이 적음
- 이식성: 개발, 테스트, 운영 환경 간 차이를 줄임
- 속도: VM 대비 시작 속도가 매우 빠름
- 버전 관리: 이미지 기반으로 쉽게 롤백 가능
- 자동화: CI/CD 파이프라인과 연계 용이
3. 도커 vs 가상머신
구분 | Docker | VM |
커널 | 호스트 OS 커널 공유 | 독립된 OS 실행 |
시작 속도 | 초 단위 | 분 단위 |
자원 사용 | 적음 | 많음 |
성능 손실 | 거의 없음 | 하이퍼바이저 오버헤드 존재 |
4. 도커 기본 명령어
# 이미지 다운로드
docker pull ubuntu:20.04
# 컨테이너 실행
docker run -it ubuntu:20.04 /bin/bash
# 실행 중인 컨테이너 목록
docker ps
# 모든 컨테이너 목록(종료 포함)
docker ps -a
# 컨테이너 중지
docker stop <container_id>
# 컨테이너 삭제
docker rm <container_id>
# 이미지 삭제
docker rmi <image_id>
5. 도커 파일(Dockerfile)
- 이미지를 생성하기 위한 설정 파일
- 예:
- FROM python:3.11 WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD ["python", "app.py"]
6. 도커와 네임스페이스 관계
- 도커는 리눅스 네임스페이스를 이용해 자원을 격리
- PID → 프로세스 ID 격리
- NET → 네트워크 환경 격리
- MNT → 파일 시스템 마운트 격리
- UTS → 호스트 이름 격리
- Cgroup을 이용해 CPU, 메모리 등 자원 제한 가능
정리
- 도커는 컨테이너 기술을 활용한 애플리케이션 실행·배포 플랫폼
- 핵심 구성: 이미지, 컨테이너, Dockerfile, 도커 허브
- 장점: 가볍고, 빠르며, 이식성이 뛰어남
- 리눅스 네임스페이스와 Cgroup이 동작 기반
- DevOps, 클라우드 환경에서 사실상 표준
'리눅스 > 리눅스 응용' 카테고리의 다른 글
Ubuntu에서 Docker 설치 방법 (3) | 2025.08.23 |
---|---|
네임스페이스(Namespace)의 개념 (3) | 2025.08.15 |
프로그램, 프로세스, 스레드의 개념 (3) | 2025.08.14 |
셔뱅(Shebang, #!) 이란? (5) | 2025.08.13 |
NCP 마켓플레이스용 Application Image 만들기 (2) | 2025.08.10 |