Docker
Docker 컨테이너 이전 (데이터 포함)
기억보다는 기록을...
2025. 1. 19. 13:58
docker1에서 운영중인 grafana를 docker2로 이전
# docker ps
CONTAINER ID IMAGE NAMES
166e84bb9f69 grafana/grafana:11.4.0 grafana
7fc5b78a34f4 zabbix/zabbix-web-nginx-pgsql:ubuntu-7.0.6 zabbix-web-nginx-pgsql
1. 현재 컨테이너(docker1/grafana) 데이터 백업
- 그라파나 컨테이너(166e84bb9f69)의 데이터 볼륨을 신규 컨터이너에 연결하여 데이터 백업 진행
# docker run --rm --volumes-from 1d58b9f91a6d -v $(pwd):/backup ubuntu tar cvf /backup/grafana-data.tar /var/lib/grafana
더보기
docker run --rm
- 새로운 Docker 컨테이터를 실행하고, 컨테이터가 실행을 마친 후 자동으로 삭제되도록 설정.
--volumes-from 1d58b9f91a6d
- 운영중인 그라파타 컨테이너(166e84bb9f69)의 볼륨을 신규로 생성한 컨테이너에 마운트
- 그라파나 데이터가 담긴 볼륨 /var/lib/grafana 디렉토리를 백업하기 위해 연결
-v $(pwd):/backup
- 현재 작업 디렉토리($(pwd))를 컨테이너 내 /backup 경로로 마운트
ubuntu
- 사용할 Docker 이미지를 지정(Ubuntu 기반 리눅스 이미지 사용)
tar cvf /backup/grafana-data.tar /var/lib/grafana
- tar 명령을 사용하여 /var/lib/grafana 디렉토리를 /backup/grafana-data.tar로 백업
2. 현재 컨테이너(docker1/grafana) 이미지 저장
# docker save -o grafana-image.tar grafana/grafana:11.4.0
3. 백업 파일을 신규 서버(docker2)로 전송
# scp grafana* dockeruser@docker2:/home/dockeruser
dockeruser@docker2's password:
grafana-data.tar 100% 45MB 94.7MB/s 00:00
grafana-image.tar 100% 471MB 170.8MB/s 00:02
4. 신규 서버(docker2) Docker 이미지 로드
# docker load -i grafana-image.tar
75654b8eeebd: Loading layer [===================================>] 8.082MB/8.082MB
0d71f8713fe9: Loading layer [===================================>] 2.56kB/2.56kB
bb89f77ca0aa: Loading layer [===================================>] 8.6MB/8.6MB
089d3485f173: Loading layer [===================================>] 9.686MB/9.686MB
0f54ec253647: Loading layer [===================================>] 194kB/194kB
4f0ca27028f6: Loading layer [===================================>] 104.4kB/104.4kB
bd7eb6dcf452: Loading layer [===================================>] 233.1MB/233.1MB
3dd8d3723003: Loading layer [===================================>] 233.6MB/233.6MB
81506b4598f7: Loading layer [===================================>] 37.89kB/37.89kB
568368e59dae: Loading layer [===================================>] 5.12kB/5.12kB
Loaded image: grafana/grafana:11.4.0
5. 신규 서버(docker2) 데이터 복원
- 볼륨 생성 -> 권한 부여 -> 데이터 복원
# docker volume create grafana-storage
grafana-storage
# chmod -R 777 /var/lib/docker/volumes/grafana-storage/_data
# docker run --rm -v grafana-storage:/var/lib/grafana -v $(pwd):/backup ubuntu tar xvf /backup/grafana-data.tar -C /var/lib/grafana --strip-components=3
더보기
--strip-components=3
- 아카이브 파일 경오에서 상위 3개 디렉토리를 제거하고 이후 파일들만 복원
- 복원 파일은 /var/lib/grafana 아래에 저장
- 백업 파일 구조
- /var/lib/grafana/grafana.db
- /var/lib/grafana/plugins/
- /var/lib/grafana/dashboards/
그라파나 데이터 경로가 /var/lib/grafana로 생성이 되어 있어서,
복원 대상에서 /var/lib/grafana를 제거하지 않을 경우 /var/lib/grafana/var/lib/grafana 아래로 복원 됨(경로중복)
- 복원 데이터 확인 (grafana.db 가 포함되어 있어야 됨)
# docker run --rm -v grafana-storage:/var/lib/grafana ubuntu ls /var/lib/grafana
csv
grafana.db
pdf
plugins
png
6. 신규 서버(docker2) 컨테이너 실행
# docker run -d --name grafana \
-e TZ=Asia/Seoul \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
--restart unless-stopped \
grafana/grafana:11.4.0
f1cb679639c19e6c720d5db7aa48de94659bd13d883875a2892a9153f788d89d
# docker ps
CONTAINER ID IMAGE NAMES
f1cb679639c1 grafana/grafana:11.4.0 grafana
7. 서비스 확인
- 접속 정보는 기존에 설정값 사용(초기 admin/admin 아님)
- 모니터링 항목, Alert 설정 등 확인