
컨테이너는 임시적인 용도로 사용되므로 상태 비저장 애플리케이션에 적합하게 확장할 수 있습니다. Couchbase와 같은 상태 저장 컨테이너는 다르게 취급해야 합니다. Docker 컨테이너의 지속성 관리 는 스테이트풀 컨테이너의 지속성을 관리하는 방법에 대한 훌륭한 개요를 제공합니다.
이 블로그에서는 사용 방법을 설명합니다. 도커 볼륨 플러그인 그리고 Portworx 를 사용하여 스테이트풀 컨테이너를 생성합니다.
왜 포트웍스인가?
Portworx 는 지속성, 복제, 스냅샷, 암호화, 보안 RBAC 등을 제공하는 배포하기 쉬운 컨테이너 데이터 서비스입니다. 몇 가지 이점은 다음과 같습니다:
- 컨테이너 세분화된 볼륨 - 포트웍스는 호스트당 여러 개의 EBS 볼륨을 가져와서 용량을 집계하고 컨테이너당 세분화된 가상(소프트) 볼륨을 도출할 수 있습니다.
- 교차 가용성 영역 HA - 포트웍스는 가용성 영역의 여러 컴퓨팅 인스턴스에서 블록 수준에서 데이터를 보호합니다. 복제 컨트롤러가 다른 노드에서 포드를 재시작해도 해당 노드에서 데이터는 여전히 고가용성을 유지합니다.
- 엔터프라이즈 데이터 운영 지원 - 포트웍스는 컨테이너 세분화된 스냅샷, 서비스 클래스, 사용 가능한 물리적 볼륨을 기반으로 한 계층화를 구현합니다.
- 배포 및 프로비저닝의 용이성 - Portworx 자체는 컨테이너로 배포되며 오케스트레이션 도구와 통합됩니다. DevOps는 크기, 서비스 클래스, 암호화 키 등과 같은 모든 속성을 사용하여 컨테이너 세분화된 스토리지를 프로그래밍 방식으로 프로비저닝할 수 있습니다.
AWS EC2 인스턴스 설정
Portworx는 Linux 또는 CoreOS에서만 실행됩니다. AWS EC2에서 Ubuntu 인스턴스를 설정합니다:
- 다음을 사용하여 우분투 14.04 인스턴스를 시작합니다.
m3.medium인스턴스 유형. 인바운드 보안 규칙에 포트 8091을 추가해야 합니다. 이렇게 하면 다음을 허용합니다. 카우치베이스 웹 콘솔 나중에 액세스할 수 있도록 설정합니다. - 명령을 사용하여 EC2 인스턴스에 로그인합니다:
ssh -i ~/.ssh/arun-cb-west1.pem ubuntu@ - Ubuntu 인스턴스를 업데이트합니다:
sudo apt-get 업데이트 - Docker를 설치합니다:
curl -sSL https://get.docker.com/ | sh. 자세한 지침은 다음에서 확인할 수 있습니다. 우분투용 Docker 다운로드. - 도커 명령에 대해 비루트 액세스를 사용하도록 설정합니다:
sudo 사용자모드 -aG 도커 우분투 - EC2 인스턴스에서 로그아웃하고 다시 로그인하기
AWS EBS 볼륨 생성
- 에 설명된 대로 EC2 콘솔을 사용하여 10GB의 EBS 볼륨을 생성합니다. 문서.
- EC2 콘솔에서 인스턴스 ID를 가져옵니다. 이 인스턴스 ID를 사용하여 이 볼륨을 EC2 인스턴스에 연결하고 기본 장치 이름을 사용합니다.
/dev/sdf.

- 사용
lsblk명령을 실행하여 볼륨이 인스턴스에 연결되어 있는지 확인합니다:12345이름 MAJ:MIN RM 크기 RO 유형 마운트포인트xvda 202:0 0 8G 0 디스크└─xvda1 202:1 0 8G 0 part /xvdb 202:16 0 30G 0 디스크 /mntxvdf 202:80 0 10G 0 디스크
포트웍스 컨테이너
- 각 노드의 물리적 스토리지 구성, 클러스터의 모든 프로비저닝된 볼륨 및 해당 컨테이너 매핑은 etcd 클러스터에 저장됩니다. etcd 클러스터를 시작합니다:
12345도커 실행 -v \/데이터/varlib/etcd \-p 4001:4001 \-d \포트웍스/etcd:최신 - 기본적으로 루트 마운트 볼륨은 공유가 허용되지 않습니다. 다음 명령을 사용하여 이 기능을 사용하도록 설정합니다:
1sudo 마운트 --make-공유 /
이에 대한 자세한 설명은 우분투 구성 및 공유 마운트. - 도커 엔진이 설치된 서버의 PX-Developer(px-dev) 컨테이너는 해당 서버를 스케일아웃 스토리지 노드로 전환합니다. 반면 PX-Enterprise는 멀티 클러스터 및 멀티 클라우드를 지원하며, 관리 대상 스토리지는 온프레미스 또는 AWS와 같은 퍼블릭 클라우드에 있을 수 있습니다.
이 블로그에서는 px-dev 컨테이너를 시작하겠습니다:
123456789101112도커 실행 --다시 시작=항상 --이름 px -d --net=호스트 \--특권=true \-v /실행/도커/플러그인:/실행/도커/플러그인 \-v /var/lib/osd:/var/lib/osd:공유 \-v /dev:/dev \-v /등/pwx:/등/pwx \-v /opt/pwx/bin:/export_bin:공유 \-v /var/실행/도커.양말:/var/실행/도커.양말 \-v /var/코어:/var/코어 \-v /usr/src:/usr/src \--ipc=호스트 \포트웍스/px-dev -daemon -k etcd://localhost:4001 -c cluster1 -s /dev/xvdf
이 명령에 대한 자세한 내용은 다음에서 확인할 수 있습니다. Docker로 PX 실행. - 다음을 사용하여 로그를 찾습니다.
도커 컨테이너 로그 -f px를 클릭하고 다음 문구를 주의하세요:
1234시간="2017-02-16T05:33:26Z" 레벨=정보 msg="스케줄러 클라이언트와 스케줄러 워치를 초기화"시간="2017-02-16T05:33:26Z" 레벨=정보 msg="키 : 스케줄러/컨테이너에 대한 KVDB 감시 시작"시간="2017-02-16T05:33:26Z" 레벨=정보 msg="키 : 스케줄러/볼륨에 대한 KVDB 감시 시작"시간="2017-02-16T05:33:26Z" 레벨=정보 msg="키 : 스케줄러/노드/리스트에서 kvdb 감시 시작" - 다음을 사용하여 포트웍스에서 사용할 수 있는 연결된 볼륨의 상태를 확인합니다.
sudo /opt/pwx/bin/pxctl 상태를 클릭하여 출력을 확인합니다:
12345678910111213141516상태: PX 는 운영노드 ID: 679b79b1-f4c3-413e-a8e0-c527348647c9IP: 172.31.25.21로컬 스토리지 Pool: 1 poolPool IO_Priority 크기 사용됨 상태 영역 지역0 LOW 10 GiB 266 MiB 온라인 a 우리-west-1로컬 스토리지 디바이스: 1 장치장치 경로 미디어 유형 크기 마지막-스캔0:1 /dev/xvdf STORAGE_MEDIUM_SSD 10 GiB 16 2월 17 05:33 UTC합계 - 10 GiB클러스터 요약클러스터 ID: 클러스터1노드 IP: 172.31.25.21 - 용량: 266 MiB/10 GiB 온라인 (이 노드)글로벌 스토리지 Pool합계 사용됨 : 266 MiB합계 용량 : 10 GiB
사용 가능한 총 용량과 사용량을 보여줍니다.
도커 볼륨
- Docker 볼륨을 만들어 보겠습니다:
1도커 볼륨 create -d pxd -o 크기=10G -o fs=ext4 --이름 cbvol
이 명령에 대한 자세한 내용은 Docker로 볼륨 생성. - 다음을 사용하여 사용 가능한 볼륨 목록을 확인하세요.
도커 볼륨 ls명령을 사용합니다:
1234드라이버 볼륨 이름local 70f7b9a356df4c1f0c08e13a4e813f1ef3e174a91001f277a63b62d683a27159pxd cbvollocal f7bc5fa455a88638c106881f1bce98244b670e094d5fdc47917b53a88e46c073
그림과 같이,cbvol는 다음과 같이 생성됩니다.pxd드라이버.
포트웍스 볼륨이 포함된 카우치베이스
- 포트웍스 볼륨을 사용하여 카우치베이스 컨테이너를 생성합니다:
1234567도커 컨테이너 실행 \-d \--이름 db \-v cbvol:/opt/카우치베이스/var \-p 8091-8094:8091-8094 \-p 11210:11210 \arungupta/카우치베이스
어떻게/opt/couchbase/var컨테이너에 저장된 모든 카우치베이스 데이터가 매핑됩니다.cbvol볼륨에 매핑됩니다. 이 볼륨은 Portworx에 의해 매핑됩니다. - https://:8091에서 Couchbase 웹 콘솔에 로그인하고 로그인
관리자그리고비밀번호를 비밀번호로 입력합니다. - 데이터 버킷으로 이동하여 새 데이터 버킷 pwx를 만듭니다:

- EC2 인스턴스의 경우 컨테이너 목록을 참조하세요:
12345우분투@IP-172-31-25-21:~$ 도커 컨테이너 ls컨테이너 ID 이미지 COMMAND 생성됨 상태 포트 이름8ae763d9d53b arungupta/카우치베이스 "/entrypoint.sh /o..." 5 분 전 Up 5 분 0.0.0.0:8091-8094->8091-8094/tcp, 11207/tcp, 11211/tcp, 0.0.0.0:11210->11210/tcp, 18091-18093/tcp db5423bcd9b426 포트웍스/px-dev "/도커-엔트리-포이..." 14 분 전 Up 14 분 pxCF3C779A4459 포트웍스/etcd:최신 "/entrypoint.sh /b..." 21 분 전 Up 21 분 2379-2380/tcp, 7001/tcp, 0.0.0.0:4001->4001/tcp youthful_jepsen
etcd,px-dev그리고db컨테이너가 실행 중입니다. - 죽이기
db컨테이너:
1도커 컨테이너 rm -f db - 다른 이름으로 데이터베이스 컨테이너를 다시 시작합니다:
1234567도커 컨테이너 실행 \-d \--이름 db \-v cbvol:/opt/카우치베이스/var \-p 8091-8094:8091-8094 \-p 11210:11210 \arungupta/카우치베이스
이제cbvol에 매핑됩니다./opt/couchbase/var다시 시작해도 데이터가 보존됩니다. 이는 Couchbase 웹 콘솔에 액세스하여 확인할 수 있습니다.pwx버킷을 생성합니다.
또 다른 흥미로운 관점은 데이터베이스가 컨테이너에 적합하지 않은 이유는 무엇인가요?. 도커가 있다고 해서 모든 데이터베이스 요구 사항을 도커화해야 한다는 의미는 아닙니다. 하지만 필요한 경우 다양한 옵션이 있으며 프로덕션급 애플리케이션에서 사용할 수 있습니다.
컨테이너에서 Couchbase를 실행하는 방법에 대해 자세히 알아보고 싶으신가요?
[...] 출처: blog.couchbase.com/stateful-docker-containers-portworx-couchbase/ [...]