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 |