강의

멘토링

커뮤니티

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

11 1님의 프로필 이미지
11 1

작성한 질문수

비전공자도 이해할 수 있는 Docker 입문/실전

[실습] Docker로 MySQL 실행시켜보기 - 4

mysql_data 폴더 내부에 다른 파일이 있는데도 잘 되는 경우

작성

·

12

0

docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql

 

이 명령을 하기 전에 mysql_data 폴더는 만들어 놔도 되지만, 폴더 내부에 다른 파일이 있으면 안 된다고 이해했습니다.

 

그런데 바로 이전 '[실습] Docker로 MySQL 실행시켜보기 - 3 강의' https://jscode.notion.site/Docker-MySQL-3-f07a2d5a24d24bf184e78622e55a6d8c

에서 비밀번호 바꿔 보는 테스트를 할 때, password123으로 컨테이너를 실행한 뒤, 컨테이너를 삭제한 후 mysql_data 폴더는 따로 삭제하지 않아서 mysql_data 내부엔 파일들이 있었을 텐데, 그 이후에 pwd1234로 바꿔서 컨테이너를 다시 생성할 때 오류가 안 났던 이유는 뭔가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 11 1님.

질문에서 주신 내용을 통해, Docker 볼륨 및 마운트와 관련된 혼란을 경험하신 것 같습니다. Docker 볼륨을 활용하여 MySQL을 설치하는 과정에서, 특정 파일 구조 및 권한에 관한 이해가 필요할 수 있습니다.

Docker 마운트의 작동 방식

Docker에서 볼륨을 사용하는 경우, 지정한 호스트 경로와 컨테이너 경로가 서로 연동됩니다. 주로 마운트와 관련해 아래와 같은 개념이 중요합니다.

  1. 초기 데이터 병합:

    • Docker는 지정한 호스트 경로에 이미 데이터가 존재할 경우, 해당 데이터들은 컨테이너가 초기화되는 동안 /var/lib/mysql에 병합됩니다. 따라서, 이전에 mysql_data 폴더에 다른 데이터가 있다고 하더라도 컨테이너 생성 시 오류가 발생하지 않으며, 데이터는 병합될 수 있습니다.
  2. 데이터 지속성 및 비밀번호 변경:

    • 이전 컨테이너에서 지정한 mysql_data 디렉토리를 동일하게 사용하면, 이는 새로운 컨테이너에 영향을 주지 않고 데이터를 지속적으로 유지합니다. 따라서 비밀번호만 변경된 상태로 컨테이너가 재생성되더라도 오류가 발생하지 않는 경우가 많습니다.
  3. 데이터 병합의 논리:

    • 새로운 컨테이너가 실행될 때 해당 디렉토리에 기존 MySQL 데이터가 있으면, 새 데이터베이스 초기화는 피하고 기존의 데이터를 사용하여 시작합니다.

기존 데이터가 있는 상태에서도 컨테이너가 잘 작동하는 이유는 위와 같은 Docker 볼륨의 특성과 데이터 병합 및 지속성 덕분입니다.

비슷한 주제를 다룬 유사한 질문을 함께 확인해보시면 이해하는데 도움이 많이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

11 1님의 프로필 이미지
11 1

작성한 질문수

질문하기