Docker를 데이터부분을 분리하여, 외부 저장소로 관리하는 방법에 대해 알아보겠습니다.도커는 volume를 관리할수 있는 명령을 제공해주며 다양한 스토리지를 사용할수 있습니다. (volume 에대한 설명은 생략)도커는 서버컨테이너를 쉽고 자유롭게 구동이 가능한 장점이 있는반면, 볼륨개념을 이해하지 못하면 그동안 축적된 데이터의 휘발 위험성이 있습니다.그래서 네트워크보다 먼저 개념을 잡고 휘발이 안되게하거나, 파편화된 스토리지를 잘 관리하는 방법이 필요합니다.NFS를 이용하는 방법도 도커를 어떻게 사용하느에따라 약간의 차이는 있지만, 여기서는 Rancher-NFS 를 이용하는 방법을 알아보겠습니다.실습환경메인 OS : 우분투도커 OS : CoreOS도커툴 : Rancher ( https://rancher.com/docs/rancher/v1.6/en/rancher-services/storage-service/rancher-nfs/ )<외부 스토리지가 설정된 모습>외부 저장소는 도커객체를 여러개 가지고 있는 메인 OS에서 하는것이 유리하며메인 OS NFS서버를 구동을합니다. 여기서 사용되는 네트워크는 메인컴퓨터-도커객체간통신이 될수있는 hostnetwork를 이용을 합니다.host : 192.168.56.1guest : 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.1MOUNT_DIR: /docker_data : 호스트의 스토리지 루트 디렉토리MOUNT_OPTS: ',nfsvers=4ON_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로 관리되는 모습
Docker 스토리지 공유 - NFS 편
Docker를 데이터부분을 분리하여, 외부 저장소로 관리하는 방법에 대해 알아보겠습니다.
도커는 volume를 관리할수 있는 명령을 제공해주며 다양한 스토리지를 사용할수 있습니다. (volume 에대한 설명은 생략)
도커는 서버컨테이너를 쉽고 자유롭게 구동이 가능한 장점이 있는반면, 볼륨개념을 이해하지 못하면 그동안 축적된 데이터의 휘발 위험성이 있습니다.
그래서 네트워크보다 먼저 개념을 잡고 휘발이 안되게하거나, 파편화된 스토리지를 잘 관리하는 방법이 필요합니다.
NFS를 이용하는 방법도 도커를 어떻게 사용하느에따라 약간의 차이는 있지만, 여기서는 Rancher-NFS 를 이용하는 방법을 알아보겠습니다.
실습환경
<외부 스토리지가 설정된 모습>
외부 저장소는 도커객체를 여러개 가지고 있는 메인 OS에서 하는것이 유리하며
메인 OS NFS서버를 구동을합니다. 여기서 사용되는 네트워크는 메인컴퓨터-도커객체간
통신이 될수있는 hostnetwork를 이용을 합니다.
NFS 서버준비
NFS를 사용하기위한 게스트 모듈 탑재
Rancher에서 Rancher-NFS 를 설치하면, 기존 구성된 도커에 NFS를 이용한 스토리지 사용이 가능합니다.
주요옵션:
NFS를 사용하는 DockerCompose
이전 단계에서 rancher-nfs 드라이브가 설치되었으며, 원격의 스토리지 이용이 가능해졌습니다.
디렉토리 생성룰에의해 실제 호스트에서는 /docker_data/{exportBase}_{볼륨명}_{자동해시) 의 조합으로 생성되며
이 디렉토리는 도커 객체의 /var/atlassian/application-data/Bitbucket 와 연결이됩니다.
Host의 파일 모습
도커의 Data들이 한곳에 모이면서 백업및 관리를 할수가 있습니다.
Storage가 UI로 관리되는 모습