강의

멘토링

커뮤니티

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

ae0505님의 프로필 이미지
ae0505

작성한 질문수

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

도커 volume 질문

작성

·

39

0

안녕하세요,

1.

도커 이미지를 이서버 , 저서버 왔다가 하는 경우면

도커 컨테이너?이미지? 안에 있는 volume에 db를 저장해놓는게 좋죠??

(호스트 storage를 이용해 db를 저장할 수도 있다고 하셔서 질문 드립니다)

 

  1. 도커 컨테이너 volume 저장 공간은 원하는 만큼 조정 할 수 있나요 (최대 호스트 디스크 저장공간)?

도커 사용이 처음이라 질문이 모호한점 양해 부탁드립니다..

답변 3

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 ! 추가 질문 너무 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~


"예를 들면 AWS에서 도커로 서비스를 운영하다가, 회사 서버에서 서비스를 운영하고싶어서 회사 서버로 도커 이미지? 컨테이너? 를 옮길때 AWS에서 사용하고 저장해왔던 데이터베이스는 어떤식으로 옮겨야 하는지요?"

-> AWS에서 회사 서버로 데이터베이스를 옮기는 방법은 크게 두 가지가 있어요!

첫 번째는 데이터베이스 덤프(dump)를 활용하는 방식이에요 !

MySQL을 예로 들면 mysqldump라는 명령어를 사용해서 데이터베이스의 모든 데이터를 하나의 SQL 파일로 추출할 수 있어요 ~

이렇게 추출한 파일을 회사 서버로 옮긴 다음에 새로운 MySQL 컨테이너에서 해당 파일을 import 해주면 데이터가 그대로 복원돼요! PostgreSQL이나 MongoDB도 비슷하게 pg_dump, mongodump 같은 명령어를 제공하고 있어서 동일한 방식으로 마이그레이션이 가능해요 :)

두 번째는 볼륨 폴더를 통째로 복사하는 방식이에요 !

만약 AWS에서 볼륨을 사용해서 DB 데이터를 호스트에 저장하고 있었다면, 해당 볼륨 폴더를 압축해서 회사 서버로 옮기고 새로운 컨테이너 실행 시 해당 폴더를 볼륨으로 연결해주면 돼요!

실무에서는 보통 첫 번째 방식인 덤프를 더 많이 사용해요 !

데이터베이스 버전이 다르거나 환경이 달라도 SQL 파일 형태로 옮기면 호환성 문제가 적기 때문이에요 :)

참고로 도커 이미지 자체에는 데이터가 저장되지 않아요! 이미지는 프로그램을 실행하기 위한 설정과 환경만 담고 있고, 실제 데이터는 볼륨이나 컨테이너 내부에 저장되는 거라서 이미지를 옮긴다고 데이터가 따라오지는 않는다는 점 참고해주세요~~

 

추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

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

질문해 주신 내용에 대해 답변드려볼게요 ~


먼저 개념을 살짝 정리해드리면, 볼륨(Volume)은 컨테이너 내부에 데이터를 저장하는 게 아니라

호스트 컴퓨터의 저장 공간을 컨테이너와 공유하는 방식이에요 !

그래서 볼륨을 사용하면 데이터는 호스트에 저장되고,

컨테이너가 삭제되어도 데이터는 남아있게 되는 거예요 !

 

"도커 이미지를 이서버 , 저서버 왔다가 하는 경우면 도커 컨테이너?이미지? 안에 있는 volume에 db를 저장해놓는게 좋죠??"

-> 여러 서버를 옮겨 다니면서 사용해야 하는 상황이라면, 볼륨만으로는 한계가 있어요 !

볼륨 데이터가 특정 호스트에 저장되어 있기 때문에 서버를 옮기면

그 데이터도 함께 마이그레이션 해줘야 하거든요 !

이런 경우에는 AWS RDS 같은 관리형 데이터베이스 서비스를 별도로 사용하거나,

AWS EBS 같은 외부 스토리지를 활용하는 방식을 고려해 보시는 게 좋아요 !

 

"도커 컨테이너 volume 저장 공간은 원하는 만큼 조정 할 수 있나요 (최대 호스트 디스크 저장공간)?"

-> 볼륨은 기본적으로 호스트의 디스크 공간을 사용하기 때문에

호스트 디스크 용량만큼 사용이 가능해요 ! 별도로 볼륨 크기를 제한하는 기능은

기본 Docker에서는 따로 제공하지 않아서,

사실상 호스트 디스크가 허용하는 만큼 자유롭게 사용하실 수 있어요 :)

 

추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~

ae0505님의 프로필 이미지
ae0505
질문자

답변 감사합니다.

질문을 한번 더 드리고 싶은데요..

예를 들면 AWS에서 도커로 서비스를 운영하다가,

회사 서버에서 서비스를 운영하고싶어서 회사 서버로 도커 이미지? 컨테이너? 를 옮길때 AWS에서 사용하고 저장해왔던 데이터베이스는 어떤식으로 옮겨야 하는지요?

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 ! 추가로 질문 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~


먼저 개념을 살짝 정리해드리면, 볼륨(Volume)은 컨테이너 내부에 데이터를 저장하는 게 아니라

호스트 컴퓨터의 저장 공간을 컨테이너와 공유하는 방식이에요 !

그래서 볼륨을 사용하면 데이터는 호스트에 저장되고,

컨테이너가 삭제되어도 데이터는 남아있게 되는 거예요 !

 

"도커 이미지를 이서버 , 저서버 왔다가 하는 경우면 도커 컨테이너?이미지? 안에 있는 volume에 db를 저장해놓는게 좋죠??"

-> 여러 서버를 옮겨 다니면서 사용해야 하는 상황이라면, 볼륨만으로는 한계가 있어요 !

볼륨 데이터가 특정 호스트에 저장되어 있기 때문에 서버를 옮기면

그 데이터도 함께 마이그레이션 해줘야 하거든요 !

이런 경우에는 AWS RDS 같은 관리형 데이터베이스 서비스를 별도로 사용하거나,

AWS EBS 같은 외부 스토리지를 활용하는 방식을 고려해 보시는 게 좋아요 !

 

"도커 컨테이너 volume 저장 공간은 원하는 만큼 조정 할 수 있나요 (최대 호스트 디스크 저장공간)?"

-> 볼륨은 기본적으로 호스트의 디스크 공간을 사용하기 때문에

호스트 디스크 용량만큼 사용이 가능해요 ! 별도로 볼륨 크기를 제한하는 기능은

기본 Docker에서는 따로 제공하지 않아서,

사실상 호스트 디스크가 허용하는 만큼 자유롭게 사용하실 수 있어요 :)

 

추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~

0

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

Docker 볼륨을 사용하여 데이터베이스를 관리하는 것에 대한 질문을 주셨는데요. Docker 환경에서 데이터의 영속성을 보장하면서 효율적으로 데이터베이스를 운영하는 방법에 대해 답변드리겠습니다.

Docker에서의 데이터베이스 저장 방식

  1. Docker 볼륨을 사용하는 장점:

    • Docker 컨테이너 내에서 데이터베이스 데이터를 저장하기보다 볼륨을 사용하는 것은 데이터의 영속성을 보장하는 가장 좋은 방법입니다. 컨테이너는 수명이 끝나면 삭제되지만, 볼륨은 Docker가 관리하는 영역에 저장되어 지속성을 보장받습니다.
    • 이렇게 데이터베이스를 Docker 볼륨에 저장하게 되면 서버를 이동하거나, 컨테이너를 업그레이드 할 때 데이터의 손실 없이 안전하게 데이터를 관리할 수 있습니다.
  2. 호스트 스토리지를 이용한 데이터 저장:

    • Docker 볼륨 외에도, 호스트의 특정 디렉토리를 바인드 마운트를 사용하여 데이터베이스 데이터를 저장할 수 있습니다. 이는 실제 호스트의 파일 시스템과 데이터를 공유하게 되고 데이터의 백업 및 관리가 호스트 차원에서 가능합니다.

Docker의 볼륨 용량 조정

  • 볼륨 용량 조정:
    • Docker 자체에서는 볼륨의 용량에 대한 제한을 설정하는 기능을 제공하지 않습니다. 따라서 볼륨의 실질적인 크기는 사용할 호스트의 디스크 용량에 의존하게 됩니다. 이는 일반적으로 수용 가능한 수준의 데이터 저장을 지원합니다.

관련된 질문에 대한 추가적인 설명을 확인하시려면 아래의 유사한 질문을 참조하시면 좋겠습니다:

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

ae0505님의 프로필 이미지
ae0505

작성한 질문수

질문하기