inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

도커불륨 mysql_data

89

CodeKimbap

작성한 질문수 22

0

이것저것 해보다 궁금한게 있습니다 ㅇㅅㅇ

로컬에서 볼륨 디렉토리가 없을때

컨테이너에서 볼륨 데이터를 덮어쓰는것 까지 이해를했는데요. 강의에서 볼륨 mysql_data로 설정을 해주잖아요. 그래서 컨터이너의 볼륨의 데이터들이 로컬에서 mysql_data 디렉토리를 만들고 그 데이터들이 호스트의 mysql_data에

들어가는데 여기서 궁금합니다.

 

컨테이너에는 mysql_data 디렉토리는 보이지 않는데 컨테이너 입장에서는 어디에서 로컬과 연결된 볼륨의 디렉토리 위치을 어떻게 할 수 있을까요. ㅇㅅㅇ;;

 

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

답변 2

0

JSCODE 박재성

안녕하세요 ! 질문 잘해주셨어요 ~

질문해주신 내용에 대해 차근차근 설명드려 볼게요 !!

 

"컨테이너에는 mysql_data 디렉토리는 보이지 않는데 컨테이너 입장에서는 어디에서 로컬과 연결된 볼륨의 디렉토리 위치을 어떻게 알 수 있을까요?"

-> 우선 말씀하신 대로 컨테이너 안에서는 mysql_data 디렉토리가 보이지 않는 게 맞아요!

컨테이너 내부에서는 /var/lib/mysql만 보여요 !

MySQL 컨테이너는 /var/lib/mysql 경로에 데이터를 저장하며,

컨테이너 입장에서는 그냥 /var/lib/mysql이라는 일반적인 디렉토리로 보여요 ~

 

하지만 Docker가 중간에서 마술처럼 동작해요 !

"-v {호스트의 절대경로}/mysql_data:/var/lib/mysql "를 통해

[Docker]가 "컨테이너의 /var/lib/mysql에 쓰는 모든 데이터를

호스트의 ./mysql_data로 연결해줘"라고 설정을해요 !

그래서 컨테이너 내부에서는 mysql_data라는 디렉터리는 보이지 않았던 겁니다!

 

여기서 이해 안 되시는 점 있으시면 편하게 또 질문 남겨주세요~~

0

인프런 AI 인턴

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

Docker에서 MySQL 컨테이너와 볼륨을 사용하는 과정에 대해 질문 주셨네요. Docker의 볼륨은 호스트와 컨테이너 간 데이터를 공유하고 유지하기 위한 중요한 도구입니다.

Docker 볼륨의 동작 방식

  1. 볼륨 설정 및 데이터 마운트:

    • Docker 명령어에서 -v 옵션을 사용하여 호스트의 디렉토리를 특정 컨테이너 내부 경로에 마운트합니다. 예를 들어, -v /호스트경로:/컨테이너경로 형태로 설정할 수 있습니다.
  2. 컨테이너와의 연계:

    • 컨테이너 내부에서는 이 호스트의 디렉토리가 마치 컨테이너 자체의 파일 시스템 일부인 것처럼 동작합니다. 컨테이너에서 이 경로에 access 할 때, 실제로는 호스트의 경로를 참조하는 것이지요.
    • 이로 인해, 컨테이너가 종료되어도 마운트된 디렉토리는 호스트에 남아 지속적으로 데이터를 저장할 수 있게 됩니다.
  3. 컨테이너 내부의 볼륨 확인:

    • 컨테이너 내부에서 mysql_data 라고 지정한 디렉토리가 보이지 않는 대신, 보통 /var/lib/mysql 같은 경로에 호스트의 데이터가 마운트됩니다. 이 경로를 탐색해 보면 실제 데이터 파일들이 저장되어 있는 것을 확인할 수 있습니다.

컨테이너 입장에서는 지정된 마운트 지점을 통해 볼륨이 마운트된 위치를 알 수 있으며, 지정된 디렉토리로 접근 시 호스트와 공유되는 데이터를 자동으로 읽고 쓸 수 있습니다.

도움이 되셨기를 바라며, 비슷한 주제를 다룬 관련 질문 링크도 소개드립니다:
- 디렉토리를 만들고 -v 옵션 사용 시: 볼륨 마운트를 활용해 데이터를 공유하는 방법에 대해 자세히 설명합니다.

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

EC2 터미널에서 docker pull

0

66

2

AWS ECR

0

62

2

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

1

112

2

Redis 볼륨 설정?

0

124

2

컨테이너의 IP

0

89

2

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

0

110

2

compose.yml 관리

0

97

2

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

0

83

2

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

0

89

1

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

0

81

2

실제 웹 서비스 배포 시 질문

0

86

2

도커 volume 질문

0

69

3

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

0

79

2

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

0

78

2

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

0

76

2

도커파일 copy

0

77

2

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

0

227

2

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

0

93

2

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

0

143

2

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

1

85

1

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

0

117

2

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

0

107

1

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

0

129

2

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

0

92

2