기존에 도커 및 쿠버네티스에 대해 겉핥기식으로만 알고 있어 자세히는 알지 못했다..ㅎㅎ
그래서 오늘은 도커의 개념을 한번 정리해 보았다!
도커(Docker)
도커는 컨테이너 기반의 가상화 기술을 활용하여 애플리케이션을 배포하고 관리하는 오픈 소스 플랫폼이다.
기존의 가상화 기술(VM, Virtual Machine)과 비교했을 때 가볍고 빠르게 실행할 수 있으며, 개발 환경과 운영 환경을 동일하게 유지할 수 있는 장점이 있다.
도커의 필요성
기존 개발 환경의 문제점
1. 개발 환경과 운영 환경의 불일치
- 개발자는 Windows, 운영 서버는 Linux인 경우, 실행 오류 발생 가능
- 라이브러리 버전 차이로 인해 "개발 환경에서는 잘 되는데 서버에서는 안 돼요!"와 같은 문제 발생
2. 복잡한 의존성 문제
- 애플리케이션 실행을 위해 여러 패키지, 라이브러리, 설정이 필요
- 여러 프로젝트를 같은 시스템에서 실행하면 충돌 발생 가능
3. 배포 과정의 비효율성
- 배포를 위해 여러 설정 파일, 패키지, 문서를 관리해야 함
- 개발자가 만든 코드를 운영 서버에 올리는 과정에서 많은 오류 발생 가능
도커의 주요 개념
1. 이미지(Image)
- 컨테이너를 실행하기 위한 템플릿
- 애플리케이션, 라이브러리, 설정 등을 포함한 "설치 패키지" 같은 개념
- 예: nginx, mysql, python:3.9 등
2. 컨테이너(Container)
- 이미지를 실행한 독립적인 프로세스
- 각 컨테이너는 격리된 환경에서 실행됨
- 예: docker run -d nginx → Nginx 컨테이너 실행
3. 도커파일(Dockerfile)
- 이미지를 만들기 위한 설정 파일
- 예: Dockerfile
FROM python:3.9
WORKDIR /app
COPY . .
CMD ["python", "app.py"]
- FROM python:3.9 → Python 3.9 기반 이미지 사용
- WORKDIR /app → 작업 디렉토리 설정
- COPY . . → 현재 디렉토리의 파일을 컨테이너 내부로 복사
- CMD ["python", "app.py"] → 컨테이너 실행 시 실행할 명령어
4. 도커 허브(Docker Hub)
- 도커 이미지를 저장하고 공유하는 레지스트리
- docker pull <이미지 이름> 명령어로 다운로드 가능
- 예: docker pull redis → Redis 이미지 다운로드
5. 도커 컴포즈(Docker Compose)
- 여러 개의 컨테이너를 한 번에 실행할 수 있도록 설정하는 도구
- docker-compose.yml 파일을 사용하여 여러 개의 서비스를 정의
- 예: yaml
version: "3"
services:
web:
image: nginx
ports:
- "8080:80"
- docker-compose up -d 명령어로 실행 가능
6. 볼륨(Volume)
- 컨테이너 내부의 데이터를 유지할 수 있도록 하는 기능
- 컨테이너가 삭제되어도 데이터가 유지됨
- 예: docker run -v /mydata:/data ubuntu → 호스트의 /mydata를 컨테이너의 /data와 연결
반응형