이 블로그에서는 다음을 시작하는 방법을 설명합니다. AWS용 Docker 멀티호스트 배포 스웜 클러스터 아마존에서.
많은 분들께 감사드립니다. 프리즘 기본 디버깅을 도와주셔서 감사합니다!
boot2docker -> 도커 머신 -> Mac용 도커
Docker를 사용하여 애플리케이션을 패키징하고 있습니까? boot2docker 개발 중인 컨테이너를 실행하기 위해? 그렇다면 정말 바위 밑에 살고 계신 겁니다!
다음으로 업그레이드하는 것이 좋습니다. 도커 머신 도커 컨테이너의 개발/테스팅을 위해. boot2docker를 캡슐화하여 머신에 하나 이상의 경량 가상 머신을 생성할 수 있습니다. 각
VM은 도커 엔진 역할을 하며 여러 개의 도커 컨테이너를 실행할 수 있습니다. 여러 VM을 실행하면 멀티 호스트를 설정할 수 있습니다. 도커 스웜 클러스터를 로컬 노트북에서 쉽게 사용할 수 있습니다.
도커 머신 는 이제 오래된 뉴스가 되었습니다. 도커콘 2016 발표 Mac용 Docker 공개 베타. 즉, 누구나
에서 Mac용 도커에 가입하세요. docker.com/getdocker 를 설치하여 Docker 컨테이너의 개발/테스트에 사용하세요. 물론 Windows용 Docker도 있습니다!
Mac용 Docker는 여전히 단일 호스트이지만 스웜 모드 를 사용하여 단일 노드 스웜 클러스터로 초기화할 수 있습니다.
AWS용 Docker란 무엇인가요?
이제 개발을 위해 Mac용 Docker를 사용한다면 어떤 배포 플랫폼을 사용하시겠습니까? 도커콘 2016에서도 AWS용 도커 및 애저 베타 발표.
AWS용 Docker와 Azure는 모두 기본적으로 스웜 모드가 활성화된 상태에서 Docker 1.12 엔진 제품군을 시작합니다. 스웜 모드는 개별 Docker 엔진이 자체 조직화 및 자가 복구 스웜으로 구성되며, 내구성을 위해 가용성 영역에 분산되어 있음을 의미합니다.
AWS 및 Azure 요금만 적용되며, 현재 AWS용 Docker 및 Azure용 Docker는 무료입니다. 다음에서 AWS 및 Azure용 Docker에 등록하세요. beta.docker.com. 현재로서는 제한적으로 제공된다는 점에 유의하세요.
시간입니다. 계정이 활성화되면 아래와 같은 초대 이메일을 받게 됩니다:
AWS용 도커 클라우드포메이션 값
를 클릭합니다. 스택 시작
을 클릭하면 CloudFormation 템플릿 페이지로 리디렉션됩니다. 기본값을 사용합니다:
S3 템플릿
URL이 자동으로 입력되며 여기서는 숨겨집니다. 를 클릭합니다. 다음
. 이 페이지에서는 CloudFormation 템플릿에 대한 세부 정보를 지정할 수 있습니다:
다음과 같이 변경될 수 있습니다:
- 템플릿 이름
- 개수 관리자 그리고 worker 노드, 이 경우 1과 3입니다. 매니저는 홀수만 지정할 수 있다는 점에 유의하세요. 기본적으로 컨테이너는 워커 노드에서만 스케줄됩니다.
- 마스터 및 워커 노드의 AMI 크기
- AWS 계정에 이미 구성된 키
를 클릭합니다. 다음
를 클릭하고 기본값을 사용합니다:
를 클릭합니다. 다음
를 클릭하고 설정을 확인합니다:
선택
IAM 리소스
확인란을 클릭하고 만들기
버튼을 클릭해 CloudFormation 템플릿을 생성합니다. 4노드 클러스터(관리자 1명 + 작업자 3명)를 만드는 데 약 10분이 걸렸습니다:
자세한 내용
클러스터에 대한 정보는 EC2 콘솔에서 확인할 수 있습니다:
AWS용 도커 스웜 클러스터 세부 정보
EC2 콘솔의 출력 탭에는 클러스터에 대한 자세한 정보가 표시됩니다:
자세한 내용
클러스터에 대한 정보는 두 가지 방법으로 얻을 수 있습니다:
- SSH를 사용하여 클러스터에 로그인합니다.
- 터널을 생성한 다음 로컬 Docker CLI를 구성합니다.
AWS용 Docker에 SSH 연결 만들기
에 표시된 명령을 사용하여 로그인 가치
열의 출력
탭을 클릭합니다. 다른 이름으로 SSH 연결을 만듭니다:
1 2 3 4 |
ssh -i ~/.ssh/아룬카우치베이스.pem 도커@Docker4AWS-ELB-SSH-945956453.us-west-1.elb.amazonaws.com 그리고 진정성 의 호스트 'docker4aws-elb-ssh-945956453.us-west-1.elb.amazonaws.com (52.9.246.163)' can't be 설립. ECDSA 키 지문 는 SHA256:C71MHTErrgOO336qAuLXah7+nc6dnRSEHFgYzmXoGyQ. Are 당신 sure 당신 want 에 계속 연결 (yes/아니요)? yes |
여기서는 CloudFormation 템플릿에서 지정한 것과 동일한 키를 사용하고 있다는 점에 유의하세요. 컨테이너 목록은 다음을 사용하여 확인할 수 있습니다. 도커 PS
명령을 사용합니다:
1 2 3 4 5 |
도커 ps 컨테이너 ID 이미지 COMMAND 생성됨 상태 포트 이름 b7be5c7066a8 docker4x/컨트롤러:aws-v1.12.0-rc3-베타1 "컨트롤러 실행 --log" 48 분 전 Up 48 분 8080/tcp 에디션_컨트롤러 3846a869c502 docker4x/shell-aws:aws-v1.12.0-rc3-베타1 "/entry.sh /usr/sbin/" 48 분 전 Up 48 분 0.0.0.0:22->22/tcp 겸손한_알메이다 82aa5473f692 docker4x/감시견-aws:aws-v1.12.0-rc3-베타1 "/entry.sh" 48 분 전 Up 48 분 naughty_swartz |
AWS용 Docker에 SSH 터널 만들기
또는 다음과 같이 SSH 터널을 만들 수 있습니다:
1 |
ssh -i ~/.ssh/아룬카우치베이스.pem -NL localhost:2375:/var/실행/도커.양말 도커@Docker4AWS-ELB-SSH-945956453.us-west-1.elb.amazonaws.com & |
DOCKER_HOST를 설정합니다:
1 |
내보내기 DOCKER_HOST=localhost:2375 |
컨테이너 목록은 위와 같이 다음을 사용하여 확인할 수 있습니다. 도커 PS
명령을 실행합니다. 또한 클러스터에 대한 자세한 정보는 다음을 사용하여 얻을 수 있습니다. 도커 정보
명령을 사용합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
도커 정보 컨테이너: 4 실행 중: 3 일시 중지됨: 0 중지됨: 1 이미지: 4 서버 버전: 1.12.0-rc3 스토리지 드라이버: aufs 루트 Dir: /var/lib/도커/aufs 후원 파일 시스템: extfs Dirs: 32 Dirperm1 지원: true 로깅 드라이버: json-파일 Cgroup 드라이버: cgroupfs 플러그인: 볼륨: local 네트워크: 호스트 bridge 오버레이 null 스웜: 활성 NodeID: 02rdpg58s1eh3d7n3lc3xjr9p IsManager: 예 관리자: 1 노드: 4 CACertHash: sha256:4b2ab1280aa1e9113617d7588d97915b30ea9fe81852b4f6f2c84d91f0b63154 런타임: runc 기본값 런타임: runc 보안 옵션: seccomp 커널 버전: 4.4.13-moby 운영 시스템: 알파인 Linux v3.4 OSType: 리눅스 아키텍처: x86_64 CPU: 1 합계 메모리: 993.8 MiB 이름: IP-192-168-33-110.us-west-1.compute.internal ID: WHSE:7WRF:WWGP:62LP:7KSZ:NOLT:OKQ2:NPFH:BQZN:MCIC:IA6L:6VB7 Docker 루트 Dir: /var/lib/도커 Debug 모드 (클라이언트): false Debug 모드 (서버): true 파일 설명자: 46 고루틴: 153 시스템 시간: 2016-07-07T04:03:11.344531471Z 이벤트 리스너: 0 사용자 이름: arungupta 레지스트리: https://index.docker.io/v1/ 실험적: true 안전하지 않음 레지스트리: 127.0.0.0/8 |
다음은 이 출력의 주요 세부 정보입니다:
- 4개의 노드와 1개의 매니저, 즉 3개의 워커 노드를 의미합니다.
- 모든 노드가 Docker 엔진 버전 1.12.0-rc3을 실행 중입니다.
- 각 VM은 Alpine Linux 3.4를 사용하여 생성됩니다.
AWS용 Docker에서 워커 노드 확장하기
모든 워커 노드는 다음과 같이 구성됩니다. AWS 오토스케일링 그룹. Manager 노드는 별도의 AWS 자동 확장 그룹에 구성됩니다.
먼저
릴리스를 사용하면 자동 스케일링 그룹을 사용하여 워커 수를 확장할 수 있습니다. Docker는 스웜에 새 인스턴스를 자동으로 가입하거나 제거합니다. 관리자 수를 실시간으로 변경하는 방법은 not 이 릴리스에서 지원됩니다. 이 릴리스에서
워커 노드에 대한 자동 스케일링 그룹을 클릭하여 그룹에 대한 전체 세부 정보를 확인하세요:
를 클릭합니다. 편집
버튼을 클릭하여 원하는 인스턴스 수를 5개로 변경한 후, 설정을 저장합니다. 저장
버튼을 클릭합니다:
새 인스턴스가 프로비저닝되고 Docker 스웜 클러스터에 자동으로 포함되는 데는 몇 초 정도 걸립니다. 새로 고쳐진 자동 스케일링 그룹은 다음과 같이 표시됩니다:
그리고 지금 도커 정보
명령은 업데이트된 출력을 다음과 같이 표시합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
도커 정보 컨테이너: 4 실행 중: 3 일시 중지됨: 0 중지됨: 1 이미지: 4 서버 버전: 1.12.0-rc3 스토리지 드라이버: aufs 루트 Dir: /var/lib/도커/aufs 후원 파일 시스템: extfs Dirs: 32 Dirperm1 지원: true 로깅 드라이버: json-파일 Cgroup 드라이버: cgroupfs 플러그인: 볼륨: local 네트워크: 오버레이 null 호스트 bridge 스웜: 활성 NodeID: 02rdpg58s1eh3d7n3lc3xjr9p IsManager: 예 관리자: 1 노드: 6 CACertHash: sha256:4b2ab1280aa1e9113617d7588d97915b30ea9fe81852b4f6f2c84d91f0b63154 런타임: runc 기본값 런타임: runc 보안 옵션: seccomp 커널 버전: 4.4.13-moby 운영 시스템: 알파인 Linux v3.4 OSType: 리눅스 아키텍처: x86_64 CPU: 1 합계 메모리: 993.8 MiB 이름: IP-192-168-33-110.us-west-1.compute.internal ID: WHSE:7WRF:WWGP:62LP:7KSZ:NOLT:OKQ2:NPFH:BQZN:MCIC:IA6L:6VB7 Docker 루트 Dir: /var/lib/도커 Debug 모드 (클라이언트): false Debug 모드 (서버): true 파일 설명자: 48 고루틴: 169 시스템 시간: 2016-07-07T04:12:34.53634316Z 이벤트 리스너: 0 사용자 이름: arungupta 레지스트리: https://index.docker.io/v1/ 실험적: true 안전하지 않음 레지스트리: 127.0.0.0/8 |
이렇게 하면 총 6개의 노드와 1개의 매니저가 있음을 알 수 있습니다.