• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

디렉토리를 만들고 -v 옵션 사용 시

24.06.19 16:47 작성 조회수 80

0

kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx (algorithmMac)
$ ls
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx (algorithmMac)
$ 
mkdir mariadbEx_data
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx (algorithmMac)
$ ls
mariadbEx_data
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx (algorithmMac)
$ 
cd mariadbEx_data
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx/mariadbEx_data (algorithmMac)
$ vi empty.txt
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx/mariadbEx_data (algorithmMac)
$ 
ls
empty.txt

$ docker run -v /Users/kimhj/desktop/bootProjectEx/dockerStudy/docker-mariadbEx/mariadbEx_data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=1234 -d -p 3307:3306 mariadb
68669f8d37eb3f6dcff172cca30174958796351621cda19cd0eeff502094f8a2
kimhj@MacBook-Pro-2 ~/desktop/bootProjectEx/dockerStudy/docker-mariadbEx/mariadbEx_data (algorithmMac)
$ docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS                    NAMES
68669f8d37eb   mariadb   "docker-entrypoint.s…"   5 seconds ago   Up 5 seconds   0.0.0.0:3307->3306/tcp   great_hawking

위 코드 처럼 디렉토리를 미리 생성하여
그 디렉토리에 empty.txt를 작성한 후
-v 옵션을 통해 실행시키니 강의의 흐름과 달리
디렉토리에 mariadb 관련 파일과 empty.txt 가 모두 존재하여 문의 드렸습니다

(개인 프로젝트 중 추가적인 공부 목적으로 이 강의를 듣고 있어서 mysql 대신 mariadb를 사용하였습니다)

답변 1

답변을 작성해보세요.

1

안녕하세요 dp4455님!

말씀해주신 내용을 기반으로 저도 테스트 해봤더니

mysql과는 다르게 mariadb 이미지에 대해서는 볼륨이 덮어씌워지지 않는 것처럼 보이기도 합니다!

 

하지만 디버깅을 해보니 이건 mariadb 내부 구조의 특성 때문에 일어난 일로 보이네요!

정상적으로 호스트 디렉터리에 파일이 있는 경우,

호스트 디렉터리의 폴더가 mariadb의 내부 폴더를 지워버리고 덮어씌우는 식으로 작동 합니다.

 

그런데도 empty.txt와 mariadb와 관련된 파일이 같이 있는 이유는

mariadb가 실행될 때 /var/lib/mysql에 적절한 파일이 없으면

초기화 셋팅을 하게끔 구성되어 있는 것 같습니다.

 

이런 작동 방식 때문에 empty.txt와 mariadb의 내부 파일이 같이 공존하는 현상이 발생했던 것 같네요:D

채널톡 아이콘