작성
·
27
0
4분쯤에 "볼륨을 제대로 잘 쓰려면 호스트의 디렉토리 경로를 빈 디렉토리로 만들던, 아니면 존재하지 않는 디렉토리로 만들어 놔야 이 컨테이너에 저장돼 있던 파일들을 이리로 붙여넣기를 해버립니다.
이렇게. 호스트에 파일이 이미 있으면 이렇게 컨테이너 기존에 있던 폴더 다 지워버리고 복사가 됩니다."
라고 하셨습니다.
근데 볼륨을 쓰는 이유가 호스트에 파일을 저장하여 mysql 컨테이너를 변경해도 저장된 값을 쓰게 하려는 것인데 호스트에 있는 파일을 매번 지워야한다면 볼륨을 쓰는 이유가 없는 거 아닌가요?
답변 2
0
안녕하세요 코딩먹는하마님! 질문 잘 해주셨어요~!!
볼륨을 제대로 잘 쓰려면 호스트의 디렉토리 경로를 빈 디렉토리로 만들던, 아니면 존재하지 않는 디렉토리로 만들어 놔야 이 컨테이너에 저장돼 있던 파일들을 이리로 붙여넣기를 해버립니다.
이렇게. 호스트에 파일이 이미 있으면 이렇게 컨테이너 기존에 있던 폴더 다 지워버리고 복사가 됩니다.
위 설명이 조금 헷갈릴 수도 있었을 것 같네요!
mysql의 컨테이너 볼륨이라고 가정하고 다시 보완해서 설명드려볼게요~!!
처음 mysql을 실행시킬 때는 호스트의 디렉토리 경로를 빈 디렉토리로 만들어 놔야, mysql 컨테이너에 저장돼 있던 기본 파일들을 호스트의 컴퓨터로 붙여넣기를 해버립니다.
그러고 mysql을 활용하면서 데이터를 저장하게 되면,
설정해둔 볼륨 덕분에 'mysql 컨테이너 내부에 저장되는 데이터 파일'이 호스트와 공유하게 됩니다.
그런 뒤 mysql 컨테이너를 종료했다가 다시 띄울 때는,
볼륨으로 공유했던 파일(호스트에 저장되어 있는 파일)을 지우지 않아야 합니다.
그래야 '호스트에 볼륨으로 사용했던 mysql 데이터 파일'이
'컨테이너 내부에 있던 기본 파일을 지우고, 호스트에 볼륨으로 사용했던 mysql 데이터 파일'로
덮어 씌우기 때문입니다.
위의 이유 때문에 mysql 컨테이너를 장기적으로 사용할 때는
호스트에 있는 파일을 매번 지우지 않아야 합니다!
최로로 mysql을 시작할 때만 지워두시면 됩니다:)
제가 위에서 설명을 장황하게 한 것 같네요...
혹시 이해 안 되시는 점 있으시면 다시 댓글 한 번만 달아주세요~~
0
안녕하세요, 인프런 AI 인턴입니다. 코딩먹는하마님.
Docker 볼륨을 사용하여 호스트와 컨테이너 간의 데이터를 공유하는 것에 대해 질문해 주셨습니다. Docker 볼륨은 데이터를 컨테이너와 호스트 간에 공유하고 지속적으로 보관하기 위해 주로 사용됩니다. 이를 통해 여러 컨테이너를 동일한 데이터 세트와 함께 사용할 수 있으며, 컨테이너가 삭제되어도 데이터는 유지됩니다.
여기서 약간 혼란스러우실 수 있는 부분은, 볼륨을 사용하면서 호스트 경로가 기존에 존재하거나 비어 있어야 한다는 것이죠. 이는 Docker가 호스트의 디렉토리와 컨테이너 내 디렉토리를 연결할 때의 동작을 이해해야 하는 부분입니다. 컨테이너가 시작될 때, 호스트 디렉토리가 비어 있거나 존재하지 않으면, 컨테이너의 해당 디렉토리에 있는 파일이 호스트 디렉토리에 복사됩니다. 이는 볼륨을 사용하여 초기에 데이터베이스 같은 것을 설정할 때 유용합니다.
이러한 사용 이유를 감안할 때, Docker 볼륨을 사용하는 주요 목적은 데이터의 지속적 보존과 각 컨테이너 간의 데이터 공유입니다. 호스트 파일의 초기 상태를 고려하여 어떤 파일이 유지되고 어떤 파일이 초기화될지 잘 설정하는 것이 중요합니다.
유사한 주제와 관련하여 도움이 될 만한 질문들의 링크를 안내드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.