728x90
Docker 컨테이너와 이미지 관리: 생성, 백업, 복원
1. Docker 이미지란 무엇인가?
- 이미지의 정의: Docker 이미지란 컨테이너 실행을 위한 파일 시스템을 포함한 읽기 전용 템플릿입니다. 이미지는 컨테이너의 "스냅샷"과 같으며, 실제 실행될 때는 컨테이너로 변환됩니다.
- 이미지 레이어: Docker 이미지가 여러 레이어로 구성된다는 점을 강조하고, 레이어가 어떻게 캐시되고 재사용되는지 설명합니다.
- 이미지의 저장소: Docker Hub와 같은 중앙 저장소에 이미지를 푸시하거나, Docker Registry를 사용하여 개인 이미지를 관리할 수 있습니다.
2. Docker 컨테이너 생성
- 컨테이너의 정의: Docker 컨테이너는 Docker 이미지를 기반으로 실행되는 가벼운 독립적인 실행 환경입니다. 컨테이너는 격리된 환경에서 실행되며, 호스트 운영 체제의 커널을 공유합니다.
- 컨테이너 실행 명령어:
docker run명령어는 이미지를 기반으로 새로운 컨테이너를 시작합니다. 예를 들어:docker run -d -p 80:80 --name mynginx nginx-d: 백그라운드에서 실행-p 80:80: 호스트의 80 포트를 컨테이너의 80 포트와 연결--name: 컨테이너 이름 설정nginx: 사용할 Docker 이미지
- 컨테이너의 다른 설정 옵션들:
- 볼륨 마운트:
-v /path/on/host:/path/in/container옵션으로 호스트와 컨테이너 간의 파일 공유. - 환경 변수:
-e VAR_NAME=value로 환경 변수 전달. - 인터랙티브 모드:
-it옵션을 사용해 터미널에 연결하여 컨테이너 내에서 작업.
- 볼륨 마운트:
3. Docker 이미지 빌드
Dockerfile: Dockerfile은 Docker 이미지를 정의하는 텍스트 파일입니다. 이 파일을 사용하여 일관성 있게 이미지를 빌드할 수 있습니다.
예시 Dockerfile:
# 기본 이미지 FROM ubuntu:20.04 # 패키지 설치 RUN apt-get update && apt-get install -y nginx # 파일 복사 COPY ./index.html /var/www/html/ # 컨테이너 실행 시 nginx 시작 CMD ["nginx", "-g", "daemon off;"]빌드 명령어:
docker build -t mynginx .: 현재 디렉터리에서 Dockerfile을 사용해 이미지를 빌드하고,mynginx라는 태그를 붙입니다.
4. 컨테이너 백업 및 복원
- 컨테이너 상태 저장:
docker commit: 실행 중인 컨테이너의 상태를 이미지로 저장할 수 있습니다.docker commit container_id my_image_name- 이 명령어는 실행 중인 컨테이너를 이미지로 변환합니다.
- 컨테이너 데이터 백업:
- 데이터베이스와 같은 중요한 데이터를 백업하는 방법을 다룰 수 있습니다. 예를 들어, MySQL 컨테이너의 데이터를 백업하려면:
docker exec mydb_container mysqldump -u root -p mydatabase > backup.sql
- 데이터베이스와 같은 중요한 데이터를 백업하는 방법을 다룰 수 있습니다. 예를 들어, MySQL 컨테이너의 데이터를 백업하려면:
- 컨테이너 파일 시스템 백업:
docker export를 사용하여 컨테이너의 파일 시스템을 tar 아카이브로 내보낼 수 있습니다.docker export container_id > container_backup.tar
- 컨테이너 복원:
- 백업한 tar 파일을 사용하여 새로운 컨테이너로 복원할 수 있습니다:
docker import container_backup.tar
- 백업한 tar 파일을 사용하여 새로운 컨테이너로 복원할 수 있습니다:
5. Docker 이미지 백업 및 복원
- 이미지 백업:
docker save명령어를 사용하여 이미지를 tar 파일로 저장할 수 있습니다:docker save -o my_image.tar my_image_name- 이 tar 파일을 다른 시스템으로 전송하거나 아카이브할 수 있습니다.
- 이미지 복원:
docker load명령어를 사용하여 tar 파일에서 이미지를 복원할 수 있습니다:docker load -i my_image.tar
6. 이미지와 컨테이너의 차이점
- 이미지: Docker 이미지는 실행에 필요한 모든 파일을 포함하는 읽기 전용 템플릿입니다.
- 컨테이너: 컨테이너는 이미지를 기반으로 실행되는 실제 환경으로, 읽기/쓰기가 가능한 공간을 가지고 있습니다. 즉, 이미지는 "템플릿"이고, 컨테이너는 "실행 중인 인스턴스"입니다.
- 상태: 이미지는 변경할 수 없지만, 컨테이너는 실행 중에 파일 시스템을 수정할 수 있습니다.
7. Docker의 효율적인 백업 및 복원 전략
- 정기적인 백업 자동화:
- 백업을 자동화하려면 cron 작업을 사용하여 주기적으로 데이터를 백업할 수 있습니다. 예를 들어, Docker 컨테이너의 데이터를 매일 백업하려면 cron job을 설정합니다.
- 예시 스크립트:
0 2 * * * docker exec mydb_container mysqldump -u root -p mydatabase > /backups/backup_$(date +\%F).sql
- 분산 환경에서의 이미지 백업:
- 여러 Docker 노드에서 동일한 이미지를 백업해야 할 경우, Docker Registry를 활용하여 이미지를 중앙 집중식으로 관리하고, 필요시 이미지를 가져올 수 있습니다.
728x90
'개발 > Docker' 카테고리의 다른 글
| Docker GitLab root 패스워드 변경 (0) | 2025.11.05 |
|---|