kh교육

(20250902046)data와 volume

boangod 2025. 9. 2. 11:14

data와 volume

 

컨테이너는 임시로 사용하는 거기 때문에 지우면 안에 데이터는 그냥 없어짐.

 

 

 

 

Container Data

 

UpperDir

컨테이너가 만들어지고 수정된 데이터가 있는 곳.

ㄴ Container운영중생성(변경)된데이터는UpperDir에저장된다.

 

 

파일 복사와 확인

docker [contaner] cp container_name:file host_file

docker [contaner] cp host_file container_name:file

ㄴ 호스트 파일이나 컨테이너 파일을 서로 복사 가능하다.

 

docker [contaner] diff container_name

•변경된 파일을 확인

 

 

 

Docker volume

•  Volume은 container 서비스의 로직과 데이터를 구분해서 데이터의 지속성을 유지하는 메커니즘을 제공한다.

•  container 내부 디렉토리와 외부 리소스를 연결한다.

 

docker run-v [외부 리소스]:[내부 디렉토리] [option] ...…

 

외부 리소스 종류

  • volume name

  • host dir(bind mount)

  • temp dir(tempfs mount)

 

 

■  Volume type

  • Volume을 생성하고 container의 디렉토리에 연결한다.

  • 여러 container에서 안전하게 공유 가능하다.

  • docker 명령어로 관리됨으로 관리가 용이하다.

  • 미리 데이터를 준비하고 연결된 container에서 바로 사용 가능하다.

 

■ Bind mount type

  • 호스트의 파일 시스템을 container 내부에서 직접 mount 한다.

  • 파일 퍼미션에 주의한다.

 

■  Tmpfs type 

  • 속도가 빠르지만 container가 정지하면 데이터가 없어진다.

  • 메모리 영역을 사용한다.

 

 

volume type → 미리 만들어두고 사용함.

 

docker volume [create | ls | inspect | rm | prune] volume

• volume을 생성, 조회, 삭제한다.

• 볼륨을 조회하고 대상 볼륨의 구조를 확인한다.

• prune은 임시 볼륨을 삭제하는 거에 사용

 

docker run -v volume:container_path ...…

docker run --mount source=volume,target=container_path ...... : 쓰지마!!

• Volume을 containe의 경로에 연결(mount)한다.

• Container의 경로가 없으면 자동으로 생성된다.

• 미리 volume 만들어두지 않으면 자동으로 만들어진다.

 

예 : docker run -itd-v myvol1:/app --name mycentos1 centos:8

 

 

volume type 공유

 

Volume은 container간 data 공유에이용된다.

container간 volume을 공유할 때유용하다.

 

docker volume inspect htdocs| grep Mountpoint

ㄴ 저장되는 디렉터리 경로를 확인하고.

 

echo "<html><body><h1>ITCLASS</h1></body></html>" > /var/lib/docker/volumes/htdocs/_data/index.html

ㄴ 거기다 파일을 넣고

 

 

# docker run -d --name myweb1-v htdocs:/usr/local/apache2/htdocs-p 8081:80 httpd

f55df62d8502acc85001449df8d0cfb6a0a93f12904c288d9f9b3ccaa6f31724

# docker run -d --name myweb2-v htdocs:/usr/local/apache2/htdocs-p 8082:80 httpd

4573bd66085a426d9af429a8f270cd1b4f677b218800802e98a7094f09874f57

# docker run -d --name myweb3-v htdocs:/usr/local/apache2/htdocs-p 8083:80 httpd

730a8add919384b54bf96fa25c371fdb3af49bdc216f123eb8b1b6d24d9ab4bf

ㄴ 확인해 보면 전부 같은 화면을 볼 수 있다.

 

 

 

bind mount type

ㄴ 내부에 디렉터리에 직접 연결함.

 

 

docker run -v [host dir]:[container dir]:[rw | ro] ...…

• rw가 defaul이다.

• ro를 지정하면 readonly로 mount 된다.

 

불필요한 volume 삭제(정리)

docker volume [rm | prune] volume volume volume ...…

 

 

 

 

 

• Volume Type이나 bind mount type은 container 실행중 mount 된 경로에 변경된 data는 container 종료 후에도 유지된다.

 

• docker의 다양한 volume기능은 container를 통한 개발이나 공유 등의 다양한 작업을 좀 더 유연하게 해 주는 중요한 기능이다.

 

'kh교육' 카테고리의 다른 글

(20250905046) kali리눅스  (0) 2025.09.05
(20250903046)image  (0) 2025.09.03
(20250901046)docker network  (1) 2025.09.01
(20250829046)docker  (1) 2025.08.29
(20250827044)Docker Image & HUB  (0) 2025.08.27