본문 바로가기

따배도 스터디

8-1 Docker Container Storage - 이론편

728x90

Q1. 컨테이너 불륨이 뭐예요 ?

Container Volumn이란 ?

  • Container image는 Read ONLY 속성을 가지고 있다.(수정 불가 !)
  • 이러한 image를 run 하게 되면 , 하나의 process 가 된다.
  • Container Image 는 Read ONLY이지만,Run 된 Container에는 rw(read & write) layer 가 생성
  • 모든 데이터는 rw layer 에 쌓이게 된다.
  • 하지만 ro와 rw는 하나인 것 처럼 보여주는데 이를 Union File System라고 한다.

 

docker rm으로 도커 컨테이너를 삭제했다고 해보자.

이럴 경우, ro & rw layer모두 사라지게 된다.

( 따라서 rw에 저장되었던 모든 데이터도 함께 사라지게 된다 )

이러한 상황을 막기 위해, 영구적으로 보존하기 위한 기술이 중요하다!

Q2. 데이터를 보존하고 싶어요

Container 가 만들어주는 data를 영구적으로 보존하는 법,

Docker HOST에 별도의 저장공간을 만들고, 이곳에 보존하기!

 

해당 container에서 만들어진 데이터가 host directory 안에 쌓이게 된다.

이러한 연결과정을 volume mount라고 한다.

(실수로 컨테이너를 삭제했다 하더라도 ,HOST에 잘 저장되어 있어서 OK)

 

volumn 옵션 사용하기

 

# case 1) 
-v <host path>:<container mount path>

# case 2) 
-v <host path>:<container mount path>:<read write mode>

# case 3
-v <container mount path>

 

Example)

 

# case 1) default : read write
docker run -d -v /dbdata:/var/lib/mysql -e MYSQL..PASSWORD=pass mysql:latest

# case 2) read only만 가능하게끔
docker run -d -v /webdata:/var/lib/html:ro httpd:latest

# case 3) host path를 명시안해주면, 임의의 directory만든 뒤 자동 mount
docker run -d -v /var/lib/mysql -e MYSQL..PASSWORD=pass mysql:latest

 

Q3. 컨테이너끼리 데이터 공유 가능한가요 ?

 

 

docker run으로 컨테이너 하나를 실행

 

docker run -v /webdata:/webdata -d --name df smlinux/df:latest

 

 

host에 있는 data를 webserver가 가져다가 사용할 수 있다.

 

docker run -d -v /webdata:/usr/share/nginx/html:ro -d ubuntu:latest

 

 

728x90