Docker 복습 및 실습 - volume

박경현·2022년 11월 14일
0

Docker volume에 관해서 정리해보려고 한다.

간단하게 어떤 개념이고 사용법도 알았지만 이번 복습 하면서 더 자세히 알게 되었다!!

Container Volume

컨테이너 image 자체는 ReadOnly임!!

그러면 컨테이너에 데이터를 넣으면 어떻게 되지??
=> 추가된 데이터는 ReadWrite 할 수있는 RW 레이어에 저장된다

이게 레이어 관리 기술-> union File System 구조로 동작 (ro rw가 하나인 것처럼 동작!)

컨테이너가 삭제 되어도 데이터는 남기자!!

이게 volume의 핵심이라고 생각한다! -> 결국 메모리가 아닌 디스크로 데이터를 영구 저장하고 싶을때 volume을 사용하게 되니까 말이다

volume에 데이터 저장법

docker -v <host path>:<container mount path>
  이거는 불륨 위치 : 컨테이너에서 저장할 파일 위치를 뜻한다!
  불륨위치가 여기 적었는데 따로 없다면 자동 생성된다!
  
  추가로 <host path> 안적어도 되는데 이러면 
  /var/lib/docker/volume/UUID/_data 여기로 저장된다!!

mysql 저장

  1. sudo docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:latest

  2. sudo docker ps => 컨테이너 run 확인

  3. sudo docker exec -it db /bin/bash => bash쉘로 접근

  4. mysql -u root -ppass 하고 들어가기!

  5. create database pkh; -> db하나 만들어보기

  6. exit로 bash 쉘 나오고 cd /dbdata해서 여기에 데이터 저장되어있는지 확인!!

volume에 있는 데이터 사용법

  1. mkdir webdata => cd webdata 해서 여기로 들어가기

  2. echo "hello" > index.html 에 저장!

  3. sudo docker run -d --name web -p 80:80 -v /webdata:/var/lib/nginx.html:ro nginx:1.14

  4. port확인해봤을때 hello가 나오면 된다!!

NAT Gateway 와 어댑터 브릿지

아마 위에 방법을 그냥 하려면 안될거다 왜냐하면

apt install net-tools
ifconfig 를 해서 ip 확인해서 접근해도 안될수도 있다

그 이유는 NAT gateway만 네트워크에 설정되어있다면 그렇다

=> NAT게이트 웨에는 프라이빗 서브넷의 인스턴스가 외부서비스는 받을 수 있지만
외부에서 접근은 못하게 되어있는거!!

외부에서 ip 접근가능하게 해결 방법

virtualbox의 네트워크 설정에 어댑터에 브릿지 추가하기!
리부팅 하고 ifconfig하면 그 ip로 접근할 수 있다!

profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글