docker run -v 호스트_경로:컨테이너_경로 이미지_이름
docker run -d -p 80:80 --name mynginx --net minipig -v /home/chohyeon1208/log:/var/log/nginx chohyeon1208/test:nginx
docker run -d --name db-svc --net minipig -v /home/chohyeon1208/data:/var/lib/mysql chohyeon1208/myapp:mydb
각각의 컨테이너는 각자의 volume을 가지고 있다.
하지만 컨테이너가 꺼지거나 재부팅 되는 경우 volume에 저장된 데이터는 손실될 확률이 있다.
→ 이처럼 데이터가 손실되는 것을 방지하기 위해 host에 volume을 만들어서 실제 데이터는 host의 volume 아래에 저장해야 한다.
💡 즉, 호스트의 디렉토리를 볼륨으로 사용하면, 컨테이너가 재부팅되거나 삭제되더라도 데이터는 호스트에 남아있어 지속적으로 사용할 수 있다.
따라서, 컨테이너가 down되거나 재부팅 되더라도 host에 저장된 데이터를 가지고 컨테이너의 기능에 접속할 수 있다. 예를 들면 mysql의 user 정보를 host의 volume에 저장해두면 컨테이너가 재부팅 되더라도 회원가입을 해줄 필요가 없다.
MySQL이나 다른 데이터베이스를 사용할 때, 볼륨을 통해 데이터의 지속성을 보장할 수 있으며, 이를 통해 매번 새로 설정할 필요 없이 데이터를 유지할 수 있다.
💡 즉, 호스트의 볼륨을 사용하는 것은 데이터의 안전성을 높이는 좋은 방법이다.
각 컨테이너는 독립적인 볼륨을 가질 수 있다.
그러나 이 볼륨은 컨테이너의 라이프사이클에 묶여 있다.
컨테이너가 중지되거나 삭제될 경우, 볼륨에 저장된 데이터는 유지된다. 하지만, 컨테이너 내부의 임시 데이터나 특정 설정이 손실될 수 있기 때문에, 중요한 데이터는 항상 호스트의 볼륨에 저장하는 것이 좋다.
docker run -v 호스트_경로:컨테이너_경로 이미지_이름
#[실제 데이터 저장]:[마운트 포인트]

→ 실제 데이터 값은 :앞에 써준 호스트 볼륨에 저장된다.
하지만, 호스트에서 data를 작성하면 컨테이너도 적용된다.
이런 마운트 종류에는, read mount와 write mount가 있다.

mount는 동기화의 개념이 아니다.
mount는 지정한 한 쪽만 데이터의 저장 공간인 반면,
동기화는 동기화해준 모든 곳이 데이터의 저장 공간이다.
→ 레지스터가 높아지는 곳으로 동기화된다.