
도커에서 -v 옵션은 컨테이너와 호스트 간에 디렉토리나 파일을 공유할 수 있도록 해주는 볼륨(Volume) 마운트 옵션이다. 즉, 컨테이너 안에서 생성되거나 수정되는 파일을 호스트에 저장하거나, 호스트에 있는 파일을 컨테이너에서 접근할 수 있도록 해주는 기능이다.
docker run -v [호스트 디렉토리]:[컨테이너 디렉토리] [이미지명]
예시:
docker run -v /home/user/data:/app/data my-image
이렇게 하면 컨테이너에서 /app/data 디렉토리에 접근하면 실제로는 /home/user/data와 연결돼서 데이터를 공유할 수 있다.
1. 호스트 볼륨(host volume) : 위에서 설명한 것처럼 호스트의 특정 디렉토리를 컨테이너와 공유하는 방식이다.
2. 도커 볼륨(docker managed volumme) : 도커가 관리하는 이름 있는 볼륨을 사용하는 방식이다.
docker volume create mydata
docker run -v mydata:/app/data my-image
mydata라는 이름의 볼륨이 자동으로 도커 내부에 생성되고, 컨테이너의 /app/data 와 연결된다.
docker run -v /path:/path:ro my-image
docker run -v myvolume:/data --name mycontainer ubuntu
컨테이너는 기본적으로 비영속적(종료되면 데이터가 사라짐)이다. 볼륨을 사용하면 데이터를 영속적으로 저장이 가능하기 때문에 볼륨을 사용한다. 또한 호스트와 컨테이너 사이 파일 공유, 여러 컨테이너 간의 데이터 공유도 가능하다.
# 현재 도커에 등록된 볼륨 보기
docker volume ls
# 특정 볼륨 정보 확인
docker volume inspect mydata
# 볼륨 삭제
docker volume rm mydata
실습 순서
먼저 Host 디렉토리를 생성한다. mkdir로 생성 후 pwd로 경로를 확인해둔다.

docker run -d --name mysqlVol_1 -e MYSQL_ROOT_PASSWORD='1111' -v /HostDirPath:/var/lib/mysql -p 3306:3306 mysql

docker exec -it mysqlVol_1 mysql -u root -p

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE dp (
id INT PRIMARY KEY,
value VARCHAR(100)
);
INSERT INTO dp VALUES (1, 'Docker is fun!');







