도커 볼륨
도커 볼륨은 컨테이너와 호스트 시스템 간의 데이터 공유를 위한 기능이다. 컨테이너는 기본적으로 읽기 전용 이미지를 기반으로 생성되기 때문에 컨테이너 내부의 데이터는 컨테이너가 삭제되면 함께 삭제된다. 이런 경우를 대비해 도커 볼륨을 사용하면 컨테이너 내부의 데이터를 호스트 시스템과 공유하여, 컨테이너가 삭제되더라도 데이터를 유지할 수 있다.
여기선 볼륨을 생성하고 볼륨과 연결된 데이터베이스 컨테이너를 실행한다. 이후 데이터베이스 데이터가 볼륨에 백업되는 것을 확인하고 새로운 컨테이너를 생성할 때 기존 볼륨을 연결하여 데이터를 복원하는 과정을 해 볼 것이다.
도커 볼륨을 생성하고 사용하는 방법은 다음과 같다.
# 도커 볼륨 생성
sudo docker volume create my-data-1
# 볼륨 조회
sudo docker volume ls
# 볼륨 상세 정보 조회
sudo docker inspect my-data-1
inspect로 볼륨의 상세 정보를 볼 수 있다. 생성한 볼륨의 데이터가 저장되는 실제 경로는 "/var/lib/docker/volumes/my-data-1/_data이다.
# 볼륨을 연결하여 MySQL 컨테이너 생성
sudo docker run -it --name=mysql_test -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=test -v my-data-1:/var/lib/mysql -d mysql:5.7
# 컨테이너 확인
sudo docker ps
컨테이너를 생성할 때 -v 옵션을 사용하여 볼륨 my-data-1을 연결할 수 있다. 이렇게 MySQL 내에 설정되는 데이터베이스 파일을 볼륨에 저장하여 지속성을 확보할 수 있다.
이후 다음과 같이 MySQL 컨테이너에 아무 데이터나 생성한다.
이후 볼륨 데이터가 저장되는 경로를 확인해 보면 MySQL 데이터가 저장된 것을 볼 수 있다.
데이터가 잘 백업되었으면 기존 컨테이너를 삭제하고 다시 만들면서, 기존의 my-data-1 볼륨을 연결한다. 그러면 볼륨에 있던 데이터가 새 컨테이너에 연결되면서 기존의 데이터를 복구할 수 있다.