Docker container volume 기초개념
.
Data_Engineering_TIL(20200725)
Study Program : Docker 기반의 DevOps 인프라 구축 WORKSHOP
관련 URL : https://www.fastcampus.co.kr/dev_workshop_devops
학습자료 출처 : http://www.authorstream.com/Presentation/k16wire-4350641-devops-docker-day3-v7/
1. 기초개념
1) 컨테이너 데이터 mount
-
volume : 도커가 관리하는 호스트 영역과 마운트
-
bind mounts : 호스트 특정 디렉토리와 마운트
-
tmps mount : 호스트 메모리와 마운트
2) volume 특징
-
도커가 추천하는 마운트 방식
-
컨테이너로부터 데이터가 분리됨
-
컨테이너간 데이터 공유가 가능해짐
-
호스트와 컨테이너간 파일 공유가 가능해짐
-
I/O 성능이 향상됨
-
저장위치는 호스트 서버내 도커가 관리하는 영역
(/var/lib/docker/volume)
- 컨테이너간 데이터 공유사례
3) volume 관리 유형
-
케이스 1 : 컨테이너 내부에 저장
-
케이스 2 : 도커 호스트 파일시스템 볼륨 마운트
-
케이스 3 : 클라우드 프로바이더 볼륨 마운트
storage-driver를 이용해 네트워크로 연결된 장치에 저장
4) storage drivers
-
overay2 사용을 추천
-
aufs : docker 18.06 이전버전
-
devicemapper : 기본지원, 성능이 떨어짐
-
btrfs/zfs
-
vfs : 아직 테스트 단계
2. 실습
test용 볼륨을 생성하고 볼륨을 컨테이너와 연결해서 띄워보는 실습
test1 이라는 볼륨을 생성
[ec2-user@ip-10-1-10-112 ~]$ sudo docker volume create --name test1
test1
볼륨을 조회
[ec2-user@ip-10-1-10-112 ~]$ sudo docker volume ls
DRIVER VOLUME NAME
local test1
볼륨을 검사
[ec2-user@ip-10-1-10-112 ~]$ sudo docker volume inspect test1
[
{
"CreatedAt": "2020-07-25T06:18:00Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test1/_data",
"Name": "test1",
"Options": {},
"Scope": "local"
}
]
볼륨을 컨테이너와 연결해서 실행
[ec2-user@ip-10-1-10-112 ~]$ sudo docker run -it -v test1:/www/test1 ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
3ff22d22a855: Pull complete
e7cb79d19722: Pull complete
323d0d660b6a: Pull complete
b7f616834fd0: Pull complete
Digest: sha256:5d1d5407f353843ecf8b16524bc5565aa332e9e6a1297c73a92d3e754b8a636d
Status: Downloaded newer image for ubuntu:latest
root@f9d5553b87c8:/# cd /www
root@f9d5553b87c8:/www# ls
test1
root@f9d5553b87c8:/www# pwd
/www
root@f9d5553b87c8:/www# exit
exit