본문 바로가기

클라우드/도커(Docker)

도커 Docker 볼륨 / Bind Mount, 도커 볼륨

볼륨


Bind Mount

 


Volume

 


tmfs mount

 

 

더보기

# 볼륨 
데이터를 저장하기 위한 스토리지
컨테이너를 삭제하면 데이터가 없어진다
볼륨이라는 리소스를 제공해서 데이터를 볼륨에 저장
영구적인 데이터 저장


# bind mount
stateless 상태가 없다
별도의 상태를 저장하지 않는 상태 ex WEB 
이미지를 만들어 놓고 vm,container 등에 찍어내면됨
호스트에 있는 특정 디렉토리 공유 (마운트 포인트 = 호스트의 디렉토리)
컨테이너에게 기존에 있는 데이터를 제공해야할 때가 있다 -> 설정파일,소스코드 제공
호스트에 있는 설정파일을 컨테이너에 제공


# 호스트에 디렉토리 만들기
vagrant@docker:~$ mkdir bindvol
vagrant@docker:~/bindvol$ echo "ldh volume" > index.html

# 컨테이너를 생성하면서 bind mount 연결
vagrant@docker:~/bindvol$ docker run -d --name web -v /home/vagrant/bindvol/:/usr/local/apache2/htdocs httpd
                                                               호스트의 경로 : 컨테이너의 경로

# 잘 연결 되었는지 확인
1.vagrant@docker:~$ docker inspect web
                "Source": "/home/vagrant/bindvol",
                "Destination": "/usr/local/apache2/htdocs",
                
2.vagrant@docker:~$ curl 172.17.0.2
 ldh volume       
 
 -> host 에서 파일을 수정하면 수정된것을 받아온다
 
 
 
 





# volume
빈 디스크 제공
stateful 상태가 있다
별도의 데이터가 생성되는것 ex DB
->상태를 저장하기 위한 저장소가 필요함
mysql같은 데이터 저장->어플리케이션이 데이터를 생성
빈 볼륨 제공 ,이미지에 의해 내용이 채워짐
컨테이너 안에서 df-h 해보면 보이지 않음

# 볼륨 생성
vagrant@docker:~$ docker volume create ldhvol
ldhvol

# 볼륨 상세 확인  
vagrant@docker:~$ docker inspect ldhvol
        "CreatedAt": "2021-07-01T08:21:09Z",
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/ldhvol/_data",
        "Name": "ldhvol",
        "Scope": "local"

# 볼륨 확인
vagrant@docker:~$ docker volume ls
DRIVER    VOLUME NAME
local     ldhvol

# 컨테이너를 생성하면서 볼륨 연결 
vagrant@docker:~$ docker run -d --name web2 -v ldhvol:/usr/local/apache2/htdocs httpd
                                              볼륨 이름 : 컨테이너의 경로

#이미지에 따라 컨테이너가 생성되면서 자동으로 볼륨이 만들어질수도 있음
mysql
inspect "volumes"에서 확인 가능 




# tmpfs mount
memory(ram)을 컨테이너에 제공
tmpfs 메모리의 일부공간을 디스크처럼 사용 =ramdisk
종료시키면 날아감
빠름 
임시데이터 

 

컨테이너가 삭제 되어도 볼륨과 데이터는 삭제되지 않고 유지된다

->쓰던 볼륨으로 컨테이너를 생성하면 예전 데이터가 들어있다