You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Docker를 데이터부분을 분리하여, 외부 저장소로 관리하는 방법에 대해 알아보겠습니다.

도커는 volume를 관리할수 있는 명령을 제공해주며 다양한 스토리지를 사용할수 있습니다. (volume 에대한 설명은 생략)

도커는 서버컨테이너를 쉽고 자유롭게 구동이 가능한 장점이 있는반면, 볼륨개념을 이해하지 못하면 그동안 축적된 데이터의 휘발 위험성이 있습니다.

그래서 네트워크보다 먼저 개념을 잡고 휘발이 안되게하거나, 파편화된 스토리지를 잘 관리하는 방법이 필요합니다.

NFS를 이용하는 방법도 도커를 어떻게 사용하느에따라 약간의 차이는 있지만, 여기서는 Rancher-NFS 를 이용하는 방법을 알아보겠습니다.


실습환경


<외부 스토리지가 설정된 모습>


외부 저장소는 도커객체를 여러개 가지고 있는 메인 OS에서 하는것이 유리하며

메인 OS NFS서버를 구동을합니다. 여기서 사용되는 네트워크는 메인컴퓨터-도커객체간

통신이 될수있는 hostnetwork를 이용을 합니다.

  • host : 192.168.56.1
  • guest : 192.168.56.201 ~


NFS 서버준비

sudo apt-get update
sudo apt-get install nfs-kernel-server

sudo mkdir /docker_data
sudo chown nobody:nogroup /docker_data


# sudo vi /etc/exports

# NFS for Docker
/docker_data 192.168.56.0/24(rw,sync,no_root_squash,no_subtree_check)

/docker_data
        192.168.56.0/24
        
# Restart        
sudo systemctl restart nfs-kernel-server


NFS를 사용하기위한 게스트 모듈 탑재

Rancher에서 Rancher-NFS 를 설치하면, 기존 구성된 도커에 NFS를 이용한 스토리지 사용이 가능합니다.


주요옵션:

  • NFS_SERVER: 192.168.56.1
  • MOUNT_DIR: /docker_data : 호스트의 스토리지 루트 디렉토리
  • MOUNT_OPTS: ',nfsvers=4
  • ON_REMOVE: purge(제거) or retain(유지) - 컨테이너가 제거될때 제거할지 유지할지에대한 옵션


NFS를 사용하는 DockerCompose

version: '2'
services:
  bitbucket:
    image: atlassian/bitbucket-server:5.6.1
    environment:
      - BITBUCKET_HOME=/var/atlassian/application-data/bitbucket/
    volumes:
      - gitdata:/var/atlassian/application-data/bitbucket
    ports:
      - 10000:7990/tcp
    labels:
      io.rancher.scheduler.affinity:host_label: host=docker1
      io.rancher.container.hostname_override: container_name
volumes:
  gitdata:
    driver: rancher-nfs
    driver_opts:
      exportBase: /bitbucket

이전 단계에서 rancher-nfs 드라이브가 설치되었으며, 원격의 스토리지 이용이 가능해졌습니다.

디렉토리 생성룰에의해   실제 호스트에서는 /docker_data/{exportBase}_{볼륨명}_{자동해시) 의 조합으로 생성되며

이 디렉토리는 도커 객체의 /var/atlassian/application-data/Bitbucket 와 연결이됩니다.



Host의 파일 모습

도커의 Data들이 한곳에 모이면서 백업및 관리를 할수가 있습니다.


Storage가 UI로 관리되는 모습




  • No labels