[클라우드/Docker 기본(19) - Docker Swarm Mode(4) : 볼륨]

SooYeon Yeon·2022년 9월 13일
0

클라우드 Docker

목록 보기
20/24

볼륨 사용하기

  1. 볼륨 마운트
docker container run ... -v testvolume:/var/lib/mysql
  1. 바인딩(NFS 사용)
docker container run ... -v /testdir:/var/www/html

호스트의 볼륨을 사용 할 경우

  1. 노드자체(호스트)에 문제가 있을 경우 볼륨 접근 불가
  2. 스케일의 축소/확장 등으로 인하여 신규 컨테이너가 기존 볼륨과 연결되지 않는 문제
  3. 각 호스트 별로 별도의 볼륨을 사용하므로 데이터의 동기화가 되지 않아 각 볼륨별로 별도의 데이터베이스가 동작하는 문제

최종적으로 로컬 볼륨은 좋은 선택이 아니다. 외부에 있는 스토리지를 사용해야 한다.

서비스 생성 시 볼륨 생성을 동시에 진행할 수 있다. 단, 기존 컨테이너에서 -v 옵션을 이용하는 방법의 경우 volume, nfs 구분이 어려울 수 있으므로 서비스에서는 이를 명확히 구분해야 한다.

type=volume → 볼륨 사용

type=bind → NFS 사용

  1. 볼륨 사용해 서비스 만들기
rapa@manager:~$ docker service create --name testvol1 --mount type=volume,source=vol1,target=/root --replicas 1 --constraint node.role==manager nginx
  • docker container ls로 아이디 확인 후 볼륨 확인하기
rapa@manager:~$ docker container exec d1475ecaa2c4 df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda5        20G   14G  4.1G  78% /root
...

/dev/sda5 - /root

vol1 스토리지와 연결됨

  1. bind 이용해 만들기
  • 호스트 디렉토리 만들기
rapa@manager:~$ mkdir testvol3
rapa@manager:~$ docker service create --name testvol3 --mount type=bind,source=/home/rapa/testvol3,target=/root --replicas 1 --constraint node.role==manager nginx

type을 bind로 하고(디렉토리-디렉토리 연결), source는 host의 home/rapa/testvol3를 컨테이너의 /root와 연결시킨다는 뜻

  • 호스트 디렉토리에서 txt 파일 생성하고, 컨테이너의 /root에서 확인 할 수 있는 지 확인
rapa@manager:~$ touch testvol3/test_from_host.txt
rapa@manager:~$ docker container ls | grep testvol3
952e37cf1c38   nginx:latest          "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   80/tcp                                                testvol3.1.p0tgiszhhwqcm31j3s2k42n1c
rapa@manager:~$ docker exec 952e37cf1c38 ls /root
test_from_host.txt

0개의 댓글