Docker의 mariadb, mongodb, postgres 데이터를 다른 서버로 옮기기
개발을 하다 보면 서버의 용량문제나 서버 증축으로 인해서 데이터들을 옮겨야 할 때가 있는데
이때 docker에 있던 db나 데이터들을 옮겨야 하는데 이게 또 마냥 귀찮을 때가 있다
그래서 이번 포스팅만 보면 보다 손쉽게 옮길 수 있는 방법을 알려드리겠습니다
docker의 정보 확인하고 옮기기
방법은 mariadb, mongodb, postgres 셋다 동일하게 진행하시면 됩니다
먼저 docker ps로 containerID를 확인하고 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를 옮길 때 과정을 알아보았습니다
도움이 되었으면 좋겠습니다
그럼 코딩이 쉬워지는 그날까지!!

'CODE > Docker' 카테고리의 다른 글
[Docker] vscode에서 docker가 안될 때 command failed wmic process where(commandline like "%ssh-askpass.bat%") (1) | 2024.11.17 |
---|---|
Docker hub push 해보기 (만든 image 올려보기) (0) | 2023.12.26 |
docker 이미지를 tar file로 사용하기 (save & load, export & import) (1) | 2023.12.26 |
Docker build (빌드) 해보기 (1) | 2023.12.26 |
Docker 자주 쓰는 명령어! (2) | 2023.12.26 |