본문 바로가기
CODE/Docker

[Docker] 도커에 있는 데이터 다른 서버로 옮기기

by Nuridal_class 2024. 1. 11.
728x90
728x90

 Docker의 mariadb, mongodb, postgres 데이터를 다른 서버로 옮기기

개발을 하다 보면 서버의 용량문제나 서버 증축으로 인해서 데이터들을 옮겨야 할 때가 있는데
이때 docker에 있던 db나 데이터들을 옮겨야 하는데 이게 또 마냥 귀찮을 때가 있다
그래서 이번 포스팅만 보면 보다 손쉽게 옮길 수 있는 방법을 알려드리겠습니다

 

docker의 정보 확인하고 옮기기

방법은 mariadb, mongodb, postgres 셋다 동일하게 진행하시면 됩니다
먼저 docker pscontainerID를 확인하고 docker inspect로 docker의 데이터를 확인해 줍니다
확인해야 할 정보는
👉 PortBindings : docker run에 -p를 담고 있는 정보입니다 (p : 포트)

 

👉 Mounts : docker run에서 -v를 담고 있는 정보입니다 (v : 볼륨)

👉 Env : docker run에 -e를 담고 있는 정보입니다 (e : 환경변수)

나머지 정보는 docker ps 명령어로 아래의 정보들을 확인해 줍니다
👉 IMAGE : 사용하는 이미지 정보
👉 PORTS :(안 보일 때는 docker inspect로 확인) : 포트 정보
👉 NAMES : 설정한 이름 정보

그럼 다음 아래의 명령어로 받을 서버에서 실행시켜 줍니다
docker run --restart=always -d -p 20003:3306 --name mariadb-public -e MARIADB_ROOT_PASSWORD=... -e MARIADB_DATABASE=... -e MARIADB_USER=... -e MARIADB_PASSWORD=... -v /docker-apps/mariadb:/var/lib/mysql mariadb:10.7.1-focal

//📲 옵션별
docker run 
--restart=always 
-d 
-p 20003:3306 
--name mariadb-public 
-e MARIADB_ROOT_PASSWORD=... -e MARIADB_DATABASE=... -e MARIADB_USER=... -e MARIADB_PASSWORD=... 
-v /docker-apps/mariadb:/var/lib/mysql 
mariadb:10.7.1-focal


💡 --restart=always : 서버가 재시작되면 알아서 restart 해주는 옵션
💡 -d : 백그라운드에서도 돌아가게 하는 옵션
💡 -p 20003:3306 : 20003 포트를 3306에 매핑하는 옵션
💡 --name mariadb-public : 컨테이너의 이름을 mariadb-public로 하는 옵션
💡 -e... : key = value 값으로 환경변수를 지정하는 옵션
💡 -v /docker-apps/mariadb:/var/lib/mysql : 서버에 있는 docker-apps/mariadb 폴더에
                                                                          docker 컨테이너의 /var/lib/mysql 폴더에 연결해주는 옵션

그 뒤에 옮긴 서버에서 docker ps로 잘 실행되었는지 확인해 줍니다

 

 docker-apps의 데이터 옮기기

이제는 scp를 사용해서 docker-apps의 데이터를 새로운 서버로 옮겨줍니다
먼저 옮겨야 하는 서버에서 수행해 줍니다
✍ scp 사용방법

scp -r docker-apps/{mariadb,mongodb,postgers} User@125.0.0.1:/docker-apps

👉 -r : 하위 폴더들 포함
👉 docker-apps/{mariadb,mongodb,postgres} : 옮길 폴더 경로({}로 지정가능)
👉 User@125.0.0.1: : 받을 user와 host 정보
👉 /docker-apps : 받을 경로​
📌 그런데 여기에서 옮기는데 Permission denied 오류가 발생할 때가 있다 해결방법은 아래와 같다
 

[Scp error] Scp로 옮길때 Permission denied 오류 발생 (cannot open directory '/bitnami/.../data': Permission denied)

Scp로 파일이나 폴더 옮길 때 Permission denied 오류!! 종종 서버에서 다른 서버로 데이터를 옮길 때 권한이 없다고 오류가 발생하는데 이게 아주 씅질이 날 때가 있다 이번 포스팅으로 이런 오류 발

nuridal-class.tistory.com

그리고 다시 새로운 서버로 db가 접속이 되는지 데이터는 있는지를 확인해 보시면 됩니다


이번 포스팅으로 서버에서 다른 서버로 docker를 옮길 때 과정을 알아보았습니다

도움이 되었으면 좋겠습니다

그럼 코딩이 쉬워지는 그날까지!!

 

728x90
300x250