인프런 커뮤니티 질문&답변

dongeon님의 프로필 이미지

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]

도커와 도커를 연결하기

도커 -v 옵션 후 재기동 시 재활용 법

작성

·

145

0

안녕하세요. 도커 -v로 mysql 실행 후 중지 후 재기동 시 처음 -v 옵션으로 만든 폴더를 재사용하고 싶은데 재기동시 -v 옵션으로 기동하면 기존에 만든 사용자 및 테이블이 삭제가 되네요.. -v로 만든 볼륨을 재사용하려면 재기동시 어떻게 하면 될까요? (기존 만든 사용자와 db 테이블을 재사용하고 싶습니다.)

답변 1

0

안녕하세요. 답변 도우미입니다.

기본적으로는 Docker에서 -v 또는 --volume 옵션을 사용하여 MySQL 컨테이너를 실행할 때, 호스트 머신과 컨테이너 간에 볼륨을 마운트합니다. 이렇게 하면 데이터를 컨테이너 외부에 저장하여 컨테이너가 중지되거나 삭제된 후에도 데이터를 유지할 수 있습니다.

저도 mysql 은 이와 같이 상용으로 오랜동안 사용했었거든요. 그래서 초기화가 된다는 것이 조금 의아하긴 해요.

혹시 일부 MySQL Docker 이미지는 컨테이너가 처음 시작될 때 데이터베이스를 초기화하는 스크립트를 실행합니다. 이 스크립트는 이미 데이터가 존재하는 경우에도 실행될 수 있으며, 이로 인해 데이터가 손상될 수 있습니다. 이런 케이스가 있는것 아닐까 하는 생각도 드는데요. 보통은 MySQL Docker 이미지는 환경 변수와 구성 파일을 사용하여 초기화 동작을 제어할 수 있습니다. 기본적으로, MySQL 컨테이너는 최초 실행 시 데이터 디렉토리가 비어 있으면 데이터베이스를 초기화합니다. 데이터 디렉토리에 파일이 이미 존재하면 초기화 스크립트는 실행되지 않습니다. 그래서 다른 도커 이미지로 테스트해보시는 것도 좋을 것 같고요. 다음 부분도 참고해보셔도 좋을 것 같습니다.

  1. 볼륨 경로 실수: Docker 컨테이너를 재시작할 때 동일한 볼륨 경로를 지정해야 합니다. 만약 경로를 변경하면, 다른 볼륨이 마운트되거나 새로운 볼륨이 생성되어 기존 데이터에 접근할 수 없게 됩니다.

  2. 권한 문제: 호스트 시스템의 볼륨 경로에 대한 권한 설정이 올바르지 않으면, MySQL 서버가 해당 디렉토리에 데이터를 쓰거나 읽을 수 없게 될 수 있습니다.

감사합니다.

 

dongeon님의 프로필 이미지

작성한 질문수

질문하기