반응형
도커 볼륨(Volume)이란?
도커 볼륨은 호스트 시스템에 데이터를 저장해서 컨테이너가 종료되거나 삭제되어도 데이터를 유지할 수 있게 해준다.
왜 도커 볼륨을 사용해야 할까?
- 데이터 영속성(Persistence):
- 컨테이너는 기본적으로 휘발성이라 삭제되면 데이터도 같이 삭제된다.
- 볼륨을 사용하면 컨테이너 삭제와 상관없이 데이터를 유지할 수 있다.
- 컨테이너 간 데이터 공유:
- 동일한 볼륨을 여러 컨테이너에서 마운트하면, 데이터를 공유할 수 있다.
- 데이터 백업과 복구:
- 볼륨 데이터를 쉽게 백업하고 복구할 수 있다.
- 효율성:
- 도커는 볼륨 데이터를 저장할 때 호스트 시스템의 파일 시스템보다 성능에 최적화된 방법을 사용한다.
- 호스트 독립성:
- 컨테이너 내부에서 데이터가 격리된 상태로 유지되면서도 필요할 때 호스트 시스템에 접근할 수 있다.
볼륨 기본 명령어
$ docker run -v [호스트 디렉토리 절대경로]:[컨테이너 디렉토리 절대경로] [이미지명]
- [호스트의 디렉토리 절대 경로]에 디렉토리가 이미 존재할 경우, 호스트의 디렉토리가 컨테이너의 디렉토리를 덮어씌운다.
- [호스트의 디렉토리 절대 경로]에 디렉토리가 존재하지 않을 경우, 호스트의 디렉토리 절대 경로에 디렉토리를 새로 만들고 컨테이너의 데렉토리에 있는 파일들을 호스트의 디렉토리로 복사해온다.
mySQL 실행
$ docker run -e MYSQL_ROOT_ PASSWORD=0000 -d -p 3306:3306 mysql
볼륨을 사용하지 않고 mySQL 실행
- 볼륨을 사용하지 않고, 컨테이너를 지우고 생성할 시, 모든 데이터가 삭제됨.
볼륨을 사용하여 mySQL 실행
$ docker run -e MYSQL_ROOT_PASSWORD=0000 -d -p 3306:3306
-v /Users/user/Documents/docker-mysql/mysql_data:/var/lib/mysql mysql
':'를 기준으로 앞에 /Users/user/Documents/docker-mysql/mysql_data는 호스트 저장 공간
/var/lib/mysql은 컨테이너 안의 저장 공간
컨테이너 저장공간이 아닌 호스트의 저장공간에 데이터가 저장되어,
해당 컨테이너가 삭제되어도 데이터는 삭제되지 않는 것을 확인 할 수 있다.
호스트 컴퓨터에 생성한 컨테이너(mysql)이 저장되었기 때문에, 다음에 동일한 디렉토리로 비밀번호만 변경해서 컨테이너를 실행하게 된다면, 최초 비밀번호로만 접속이 가능하다. (최초에 생성되었을 때, 비밀번호가 이미 호스트 컴퓨터 저장공간에 저장이 되었기 때문)
반응형