inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

330

dp4455

작성한 질문수 3

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를 사용하였습니다)

docker docker-compose docker-volume docker-image container ecr

답변 1

1

JSCODE 박재성

안녕하세요 dp4455님!

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

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

 

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

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

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

 

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

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

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

 

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

EC2 터미널에서 docker pull

0

62

2

AWS ECR

0

57

2

FROM openjdk:17-jdk 현재 기준 dockerhub에 없습니다

1

100

2

Redis 볼륨 설정?

0

117

2

컨테이너의 IP

0

80

2

도커 이미지를 만들 때 application.yml

0

105

2

compose.yml 관리

0

87

2

ECR 리포지토리에 이미지가 3개가 보입니다.

0

77

2

액세스 키 등록하는 시점 관련 질문이 있습니다.

0

83

1

depends_on에 따른 컨테이너 실행 순서

0

76

2

실제 웹 서비스 배포 시 질문

0

80

2

도커 volume 질문

0

67

3

HTTPS로도 받고 싶으면 docker compose에 443도 쓰면 될까요?

0

72

2

sql 볼륨 폴더 지우면 데이터베이스 데이터 날라가는거 아닌가요?

0

72

2

39강 도커파일 빌드 경로 질문이 있습니다.

0

69

2

도커파일 copy

0

70

2

실무에서 docker compose up --build를 할 때

0

185

2

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

0

85

2

도커 허브에서 postgres 버전 확인하는 법

0

127

2

보충 자료와도 관련된 추가 내용

1

82

1

현업에서 MySQL은 RDS와 도커 볼륨 중 어떤 걸 사용하나요?

0

110

2

노션 자료에 안 보이는 이미지가 있습니다

0

100

1

도커 허브에서의 latest가 가장 최신인 게 맞나요?

0

119

2

docker image ls 실행 시 나오는 내용이 다릅니다

0

86

2