Docker container volume 기초개념

2020-07-29

.

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 : 호스트 메모리와 마운트

image

2) volume 특징

  • 도커가 추천하는 마운트 방식

  • 컨테이너로부터 데이터가 분리됨

  • 컨테이너간 데이터 공유가 가능해짐

  • 호스트와 컨테이너간 파일 공유가 가능해짐

  • I/O 성능이 향상됨

  • 저장위치는 호스트 서버내 도커가 관리하는 영역

(/var/lib/docker/volume)

  • 컨테이너간 데이터 공유사례

image

3) volume 관리 유형

  • 케이스 1 : 컨테이너 내부에 저장

  • 케이스 2 : 도커 호스트 파일시스템 볼륨 마운트

  • 케이스 3 : 클라우드 프로바이더 볼륨 마운트

storage-driver를 이용해 네트워크로 연결된 장치에 저장

image

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