Docker volume에 관해서 정리해보려고 한다.
간단하게 어떤 개념이고 사용법도 알았지만 이번 복습 하면서 더 자세히 알게 되었다!!
컨테이너 image 자체는 ReadOnly임!!
그러면 컨테이너에 데이터를 넣으면 어떻게 되지??
=> 추가된 데이터는 ReadWrite 할 수있는 RW 레이어에 저장된다
이게 레이어 관리 기술-> union File System 구조로 동작 (ro rw가 하나인 것처럼 동작!)
이게 volume의 핵심이라고 생각한다! -> 결국 메모리가 아닌 디스크로 데이터를 영구 저장하고 싶을때 volume을 사용하게 되니까 말이다
docker -v <host path>:<container mount path>
이거는 불륨 위치 : 컨테이너에서 저장할 파일 위치를 뜻한다!
불륨위치가 여기 적었는데 따로 없다면 자동 생성된다!
추가로 <host path> 안적어도 되는데 이러면
/var/lib/docker/volume/UUID/_data 여기로 저장된다!!
sudo docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:latest
sudo docker ps => 컨테이너 run 확인
sudo docker exec -it db /bin/bash => bash쉘로 접근
mysql -u root -ppass 하고 들어가기!
create database pkh; -> db하나 만들어보기
exit로 bash 쉘 나오고 cd /dbdata해서 여기에 데이터 저장되어있는지 확인!!
mkdir webdata => cd webdata 해서 여기로 들어가기
echo "hello" > index.html 에 저장!
sudo docker run -d --name web -p 80:80 -v /webdata:/var/lib/nginx.html:ro nginx:1.14
port확인해봤을때 hello가 나오면 된다!!
아마 위에 방법을 그냥 하려면 안될거다 왜냐하면
apt install net-tools
ifconfig 를 해서 ip 확인해서 접근해도 안될수도 있다
그 이유는 NAT gateway만 네트워크에 설정되어있다면 그렇다
=> NAT게이트 웨에는 프라이빗 서브넷의 인스턴스가 외부서비스는 받을 수 있지만
외부에서 접근은 못하게 되어있는거!!
virtualbox의 네트워크 설정에 어댑터에 브릿지 추가하기!
리부팅 하고 ifconfig하면 그 ip로 접근할 수 있다!