본문 바로가기

공부/Linux

[Linux] 3. Docker Volume

Docker Volume에 대해 설명하는 글이다.

Window에서 Ubuntu를 사용한다.

 

 

도커 컨테이너를 삭제할 경우 컨테이너에 저장했던 데이터들도 전부 삭제된다. 따라서 이를 영구적으로 저장하기 위해 Docker Volume을 사용한다. Docker Volume은 컨테이너가 데이터를 영구적으로 저장할 수 있는 공간으로 컨테이너가 삭제되더라도 데이터를 유지할 수 있도록 해준다.

 

 

sudo docker volume create 이름

 

해당 이름을 가진 도커 볼륨을 생성한다.

 

 

 

sudo ls /var/lib/docker/volumes

 

생성한 도커 볼륨을 확인할 수 있다. 해당 디렉터리 안에 볼륨들이 생성이 된다.

 

 

sudo docker volume list

 

생성한 도커 볼륨을 확인할 수 있다.

 

 

sudo docker volume inspect 이름

 

해당 도커 볼륨의 디테일을 확인한다.

 

 

sudo docker volume rm 이름

 

해당 도커 볼륨을 삭제한다.

 

 

sudo docker volume prune

 

컨테이너와 연결되어 있지 않은 도커 볼륨을 모두 삭제한다.

 

 

mysql 이미지를 기반으로 데이터베이스 컨테이너를 생성해보자.

sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=1234 -v 볼륨이름:/var/lib/mysql mysql:5.7

 

MySQL 5.7 데이터베이스 컨테이너를 백그라운드(-d)로 실행시킨다. -e로 환경변수를 설정하며 -v로 볼륨을 연결한다.

-e MYSQL_ROOT_PASSWORD=1234: MySQL의 root 비밀번호를 1234로 설정한다.

-v 볼륨이름:/var/lib/mysql: 해당 볼륨을 MySQL의 데이터 저장소인 /var/lib/mysql에 연결한다. 

우리가 백그라운드로 실행했으므로 설치가 완료되어도 해당 컨테이너로 들어가지 않는다. 그러나, sudo docker images를 쳐보면 잘 설치가 된 것을 볼 수 있다. sudo docker ps를 쳐서 현재 컨테이너가 잘 돌고 있는 것을 볼 수 있다. 이제 해당 컨테이너로 들어가자.

 

 

sudo docker exec -it mysql bash

 

bash 셸로 mysql 컨테이너에 들어간다.

 

 

MySQL에 접속해보자.

mysql -u root -p

 

루트 권한으로 접속한다. 비밀번호는 아까 설정한 1234를 치면 된다. 이제 Mysql을 사용할 수 있다. quit를 쳐서 나올 수 있다.

현재 우리는 도커 볼륨으로 연결을 해놓았기 때문에 우리가 만든 컨테이너를 삭제하더라도 데이터는 삭제되지 않는다. 이로써 데이터를 보존할 수 있다. 다음에 다른 컨테이너를 만들고 도커 볼륨을 연결해주면 우리가 이전 컨테이너에서 만든 데이터가 그대로 남아 있는 것을 볼 수 있다.