작성
·
145
답변 1
0
안녕하세요. 답변 도우미입니다.
기본적으로는 Docker에서 -v
또는 --volume
옵션을 사용하여 MySQL 컨테이너를 실행할 때, 호스트 머신과 컨테이너 간에 볼륨을 마운트합니다. 이렇게 하면 데이터를 컨테이너 외부에 저장하여 컨테이너가 중지되거나 삭제된 후에도 데이터를 유지할 수 있습니다.
저도 mysql 은 이와 같이 상용으로 오랜동안 사용했었거든요. 그래서 초기화가 된다는 것이 조금 의아하긴 해요.
혹시 일부 MySQL Docker 이미지는 컨테이너가 처음 시작될 때 데이터베이스를 초기화하는 스크립트를 실행합니다. 이 스크립트는 이미 데이터가 존재하는 경우에도 실행될 수 있으며, 이로 인해 데이터가 손상될 수 있습니다. 이런 케이스가 있는것 아닐까 하는 생각도 드는데요. 보통은 MySQL Docker 이미지는 환경 변수와 구성 파일을 사용하여 초기화 동작을 제어할 수 있습니다. 기본적으로, MySQL 컨테이너는 최초 실행 시 데이터 디렉토리가 비어 있으면 데이터베이스를 초기화합니다. 데이터 디렉토리에 파일이 이미 존재하면 초기화 스크립트는 실행되지 않습니다. 그래서 다른 도커 이미지로 테스트해보시는 것도 좋을 것 같고요. 다음 부분도 참고해보셔도 좋을 것 같습니다.
볼륨 경로 실수: Docker 컨테이너를 재시작할 때 동일한 볼륨 경로를 지정해야 합니다. 만약 경로를 변경하면, 다른 볼륨이 마운트되거나 새로운 볼륨이 생성되어 기존 데이터에 접근할 수 없게 됩니다.
권한 문제: 호스트 시스템의 볼륨 경로에 대한 권한 설정이 올바르지 않으면, MySQL 서버가 해당 디렉토리에 데이터를 쓰거나 읽을 수 없게 될 수 있습니다.
감사합니다.