도커 스웜과 도커 컴포즈? 이제 함께 작동합니다! Docker 1.13 의 새 버전을 소개했습니다. 도커 컴포즈. 이번 릴리스의 주요 기능은 Docker Compose 파일을 사용하여 정의한 서비스를 스웜 모드로 활성화된 Docker 엔진에 직접 배포할 수 있다는 것입니다. Docker Compose가 포함된 Docker Swarm을 사용하면 멀티 호스트에 멀티 컨테이너 애플리케이션을 간편하게 배포할 수 있습니다.
이 블로그에서는 간단한 Docker Swarm 및 Docker Compose 파일을 통해 Docker 1.13에서 서비스가 어떻게 생성되고 배포되는지 보여드립니다.
다음은 Couchbase 데이터베이스 노드를 시작하기 위한 Docker Compose v2 정의입니다:
1 2 3 4 5 6 7 8 9 |
버전: "2" 서비스: db: 이미지: arungupta/카우치베이스:최신 포트: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 |
이 정의는 스웜 모드가 없는 Docker 엔진에서 다음과 같이 시작할 수 있습니다:
1 |
도커-작성 up |
그러면 작성 파일에 정의된 서비스의 단일 복제본이 시작됩니다. 이 서비스는 다음과 같이 확장할 수 있습니다:
1 |
도커-작성 규모 db=2 |
이 방법은 단일 호스트에서 정상적으로 작동합니다. 도커 엔진에서 스웜 모드가 켜져 있으면 메시지가 표시됩니다:
1 2 3 4 5 |
경고: 그리고 Docker 엔진 당신're 사용 는 실행 중 in swarm 모드. 작성 does not 사용 swarm 모드 에 배포 서비스 에 여러 노드 in a swarm. 모두 컨테이너 will be 예약 on 의 현재 노드. To 배포 당신의 애플리케이션 전반적으로 의 swarm, 사용 `도커 스택 배포`. |
Docker Compose는 멀티 컨테이너 애플리케이션을 제공하지만 애플리케이션은 여전히 단일 호스트로 제한됩니다. 그리고 이는 단일 장애 지점입니다. 스웜 모드의 Docker Compose를 사용하면 Docker 엔진의 클러스터를 생성할 수 있습니다. 1.13에서는 도커 스택 배포
명령을 사용하여 Docker Compose 파일을 Docker 스웜 모드로 배포할 수 있습니다. 다음은 Docker Compose v3 정의의 예입니다:
1 2 3 4 5 6 7 8 9 |
버전: "3" 서비스: db: 이미지: arungupta/카우치베이스:최신 포트: - 8091:8091 - 8092:8092 - 8093:8093 - 11210:11210 |
보시다시피 유일한 변경 사항은 버전
어트리뷰트입니다. 다른 도커 컴포즈 v3의 변경 사항. 또한 다음에 대해서도 읽어보세요. 다양한 도커 컴포즈 버전 그리고 방법 V2에서 V3로 업그레이드하세요. 스웜 모드로 Docker Compose를 활성화합니다:
1 |
도커 swarm init |
다른 노드가 이 스웜 클러스터에 참여할 수 있으며 이를 통해 멀티 컨테이너 애플리케이션을 멀티 호스트에도 쉽게 배포할 수 있습니다. Docker를 사용하여 Compose 파일에 정의된 스웜에 서비스를 배포합니다:
1 |
도커 스택 배포 --작성-파일=도커-작성.yml 카우치베이스 |
여기서 기본값을 파일 작성으로 설정하면 명령이 조금 더 짧아집니다. #30352 에서 처리해야 합니다. 실행 중인 서비스 목록은 다음을 사용하여 확인할 수 있습니다. 도커 서비스 ls
명령을 사용합니다:
1 2 |
ID 이름 모드 복제 이미지 05WA4Y2HE9W5 couchbase_db 복제 1/1 arungupta/카우치베이스:최신 |
서비스 내에서 실행 중인 컨테이너 목록은 다음을 사용하여 확인할 수 있습니다. 도커 서비스 PS
명령을 사용합니다:
1 2 |
ID 이름 이미지 NODE DESIRED 상태 현재 상태 오류 포트 rchu2uykeuuj couchbase_db.1 arungupta/카우치베이스:최신 moby 실행 중 실행 중 52 초 전 |
이 경우 단일 컨테이너가 서비스의 일부로 실행되고 있습니다. 노드는 다음과 같이 나열됩니다. moby
로 변경되며, 이는 Mac용 Docker를 사용하여 실행되는 Docker 엔진의 기본 이름입니다. 이제 서비스를 다음과 같이 확장할 수 있습니다:
1 |
도커 서비스 규모 couchbase_db=2 |
그러면 컨테이너 목록을 다시 다음과 같이 볼 수 있습니다:
1 2 3 |
ID 이름 이미지 NODE DESIRED 상태 현재 상태 오류 포트 rchu2uykeuuj couchbase_db.1 arungupta/카우치베이스:최신 moby 실행 중 실행 중 3 분 전 kjy7l14weao8 couchbase_db.2 arungupta/카우치베이스:최신 moby 실행 중 실행 중 23 초 전 |
컨테이너에는 다음과 같은 형식을 사용하여 이름이 지정됩니다. _n
. 두 컨테이너는 모두 동일한 호스트에서 실행되고 있습니다. 또한 두 컨테이너는 독립적인 Couchbase 노드이며 아직 클러스터로 구성되지 않았습니다. 이에 대해서는 이미 Docker를 사용한 카우치베이스 클러스터 단계가 곧 새로워질 예정입니다. 서비스에는 일반적으로 여러 호스트에 걸쳐 여러 개의 컨테이너가 실행됩니다. Docker 1.13에는 새로운 명령어가 도입되었습니다. 도커 서비스 로그
를 사용하여 모든 호스트의 모든 컨테이너에서 서비스 로그를 콘솔로 스트리밍할 수 있습니다. 저희의 경우, 다음 명령을 사용하여 확인할 수 있습니다. 도커 서비스 로그 couchbase_db
처럼 보입니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
couchbase_db.1.rchu2uykeuuj@moby | ++ set -m couchbase_db.1.rchu2uykeuuj@moby | ++ 수면 15 couchbase_db.1.rchu2uykeuuj@moby | ++ /진입점.sh 카우치베이스-서버 couchbase_db.2.kjy7l14weao8@moby | ++ set -m couchbase_db.2.kjy7l14weao8@moby | ++ 수면 15 couchbase_db.1.rchu2uykeuuj@moby | 시작 카우치베이스 서버 -- 웹 UI 사용 가능 에서 http://:8091 및 /opt/couchbase/var/lib/couchbase/logs에 로그가 있습니다. couchbase_db.1.rchu2uykeuuj@moby | ++ curl -v -X POST http://127.0.0.1:8091/pools/default -d memoryQuota=300 -d indexMemoryQuota=300 couchbase_db.2.kjy7l14weao8@moby | ++ /진입점.sh 카우치베이스-서버 couchbase_db.2.kjy7l14weao8@moby | 시작 카우치베이스 서버 -- 웹 UI 사용 가능 에서 http://:8091 및 /opt/couchbase/var/lib/couchbase/logs에 로그가 있습니다. . . . couchbase_db.1.rchu2uykeuuj@moby | ++ '[' '' = WORKER ']' couchbase_db.2.kjy7l14weao8@moby | 콘텐츠-유형: 애플리케이션/json couchbase_db.1.rchu2uykeuuj@moby | ++ fg 1 couchbase_db.2.kjy7l14weao8@moby | 콘텐츠-길이: 152 couchbase_db.1.rchu2uykeuuj@moby | /진입점.sh 카우치베이스-서버 couchbase_db.2.kjy7l14weao8@moby | 캐시-제어: 아니요-캐시 couchbase_db.2.kjy7l14weao8@moby | couchbase_db.2.kjy7l14weao8@moby | ++ echo 'Type: ' couchbase_db.2.kjy7l14weao8@moby | ++ '[' '' = WORKER ']' couchbase_db.2.kjy7l14weao8@moby | ++ fg 1 couchbase_db.2.kjy7l14weao8@moby | {"storageMode":"memory_optimized","indexerThreads":0,"메모리 스냅샷 간격":200,"안정적인 스냅샷 간격":5000,"최대 롤백 포인트":5,"logLevel":"정보"}유형: couchbase_db.2.kjy7l14weao8@moby | /진입점.sh 카우치베이스-서버 |
로그 문의 서문은 다음과 같은 형식을 사용합니다. .@
. 그러면 컨테이너의 실제 로그 메시지가 표시됩니다. 처음에는 컨테이너 ID를 첨부하는 것이 중복되어 보일 수 있습니다. 하지만 도커 서비스 는 자가 복구 기능이 있습니다. 즉, 컨테이너가 죽으면 Docker 엔진은 지정된 시간에 지정된 수의 복제본을 보장하기 위해 다른 컨테이너를 시작합니다. 이 새 컨테이너는 새 ID를 갖게 됩니다. 따라서 올바른 컨테이너에서 로그 메시지를 첨부할 수 있습니다. 명령어를 간단히 비교해보겠습니다:
Docker Compose v2 | 도커 컴포즈 v3 | |
---|---|---|
서비스 시작 | 도커-컴포지트 업 -d |
도커 스택 배포 --compose-file=docker-compose.yml |
스케일 서비스 | 도커-컴포지션 스케일 = |
도커 서비스 규모 = |
종료 | 도커-컴포지트 다운 |
도커 스택 RM |
멀티 호스트 | 아니요 | 예 |
Couchbase를 시작하고 싶으신가요? 다음을 살펴보세요. 카우치베이스 스타터 키트. 컨테이너에서 Couchbase를 실행하는 방법에 대해 자세히 알아보고 싶으신가요?