Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| public:computer:docker [2021/08/08 18:21] – alex | public:computer:docker [2021/08/08 21:00] (current) – [A.3 Cloud Console 사용법] alex | ||
|---|---|---|---|
| Line 1732: | Line 1732: | ||
| ---- | ---- | ||
| ===== 멀티호스트 환경에서 Docker 실행 환경 구축 ===== | ===== 멀티호스트 환경에서 Docker 실행 환경 구축 ===== | ||
| - | |||
| ==== 멀티호스트 환경에서 컨테이너 관리의 개요 ==== | ==== 멀티호스트 환경에서 컨테이너 관리의 개요 ==== | ||
| === 멀티호스트 환경과 클러스터링 === | === 멀티호스트 환경과 클러스터링 === | ||
| + | * 클러스터링; | ||
| + | * 가용성(Availability); | ||
| + | * 확장성(Scalability); | ||
| + | |||
| === Docker Machine이란? | === Docker Machine이란? | ||
| + | * 호스트 머신/ | ||
| + | * https:// | ||
| + | |||
| ==== 웹 애플리케이션을 서비스 공개해 보자 ==== | ==== 웹 애플리케이션을 서비스 공개해 보자 ==== | ||
| - | === Docker 실행 환경 작성 | + | - Docker 실행 환경 작성 |
| - | + | | |
| - | === 웹 애플리케이션 전개 | + | |
| - | + | ||
| - | === Docker 실행 환경 삭제 | + | |
| ==== Docker Machine을 사용한 실행 환경 구축 ==== | ==== Docker Machine을 사용한 실행 환경 구축 ==== | ||
| === Docker Machine의 기본 명령 === | === Docker Machine의 기본 명령 === | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine --version | ||
| + | </ | ||
| + | |||
| + | ^ Docker Machine의 서브 명령 | ||
| + | ^ 서브 명령 | ||
| + | | create | ||
| + | | ls | 실행 환경 목록 표시 | ||
| + | | status | ||
| + | | url | 실행 환경 URL 표시 | ||
| + | | ssh | 실행 환경에 대한 SSH 연결 | ||
| + | | start | 실행 환경 시작 | ||
| + | | stop | 실행 환경 정지 | ||
| + | | restart | ||
| + | | scp | 실행 환경에서 파일 다운로드 | ||
| + | | rm | 실행 환경 삭제 | ||
| + | | kill | 실행 환경 강제 정지 | ||
| + | | ip | 실행 환경 IP 주소 확인 | ||
| + | | inspect | ||
| + | |||
| === 실행 환경 작성(create) === | === 실행 환경 작성(create) === | ||
| + | <alert type=" | ||
| + | |||
| + | * Docker Machine에서 이용할 수 있는 드라이버 목록; https:// | ||
| + | |||
| === 실행 환경 목록 표시(ls/ | === 실행 환경 목록 표시(ls/ | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --quite, -q | 머신명만 표시한다 | ||
| + | | --filter | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine status host1 # 실행 환경의 스테이터스 확인 | ||
| + | $ docker-machine url host1 # 실행 환경의 URL 확인 | ||
| + | </ | ||
| === 실행 환경에 대한 SSH 연결(ssh) === | === 실행 환경에 대한 SSH 연결(ssh) === | ||
| + | <alert type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine ssh host1 | ||
| + | </ | ||
| + | |||
| === 실행 환경 시작/ | === 실행 환경 시작/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine start host1 # 실행 환경 시작 | ||
| + | $ docker-machine stop host1 # 실행 환경 정지 | ||
| + | $ docker-machine restart host1 # 실행 환경 재시작 | ||
| + | </ | ||
| === 실행 환경으로부터 파일 다운로드(scp) === | === 실행 환경으로부터 파일 다운로드(scp) === | ||
| + | <cli prompt=" | ||
| + | $ docker-machine scp host1:/ | ||
| + | </ | ||
| + | |||
| + | * SCP(Secure Copy Protocol); SSH의 기능을 사용하여 파일을 전송하기 위한 명령 Secure Copy Protocol로 인증 정보와 데이터를 암호화하여 네트워크로 전송 | ||
| === 실행 환경 삭제(rm/ | === 실행 환경 삭제(rm/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine rm -f host1 # 실행 환경 삭제 | ||
| + | $ docker-machine kill host1 # 실행 환경 강제 정지 | ||
| + | </ | ||
| === 실행 환경 정보 확인(ip/ | === 실행 환경 정보 확인(ip/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine ip host1 # IP 주소 확인 | ||
| + | </ | ||
| + | <alert type=" | ||
| Line 1771: | Line 1835: | ||
| ---- | ---- | ||
| ===== 클라우드를 사용한 Docker 실행 환경 구축 ===== | ===== 클라우드를 사용한 Docker 실행 환경 구축 ===== | ||
| + | > GKE(Google Kubernetes Engine) | ||
| ==== 클라우드 환경에서 Docker 오케스트레이션하기 ==== | ==== 클라우드 환경에서 Docker 오케스트레이션하기 ==== | ||
| === 분산 환경에서의 컨테이너 운용 관리 === | === 분산 환경에서의 컨테이너 운용 관리 === | ||
| + | * Kubernetes | ||
| + | * Docker Enging(Swarm 모드) | ||
| + | * Apache Mesos, Marathon | ||
| + | |||
| === 퍼블릭 클라우드가 제공하는 매니지드 서비스 === | === 퍼블릭 클라우드가 제공하는 매니지드 서비스 === | ||
| + | * Amazon EC2 Container Service | ||
| + | * Azure Container Service(AKS) | ||
| + | * Google Kubernetes Engine(GKE) | ||
| + | |||
| === Google Cloud Platform의 컨테이너 관련 서비스 === | === Google Cloud Platform의 컨테이너 관련 서비스 === | ||
| + | * Google Container Builder | ||
| + | * Google Kubernetes Enging | ||
| + | * Google Container Registry | ||
| + | |||
| ==== Kubernetes의 개요 ==== | ==== Kubernetes의 개요 ==== | ||
| + | * 여러 서버들에서의 컨테이너 관리 | ||
| + | * 컨테이너 간 네트워크 관리 | ||
| + | * 컨테이너의 부하분산 | ||
| + | * 컨테이너의 감시 | ||
| + | * 무정지로 업데이트 | ||
| === Kubernetes의 서버 구성 === | === Kubernetes의 서버 구성 === | ||
| + | * 마스터 서버(Kubernetes Master) | ||
| + | * 백엔드 데이터베이서(etcd) | ||
| + | * 노드(Node) | ||
| + | |||
| === 애플리케이션 구성 관리(Pod, ReplicaSet, Deployment) === | === 애플리케이션 구성 관리(Pod, ReplicaSet, Deployment) === | ||
| + | * Pod(포드) | ||
| + | * ReplicaSet(리플리카 셋) | ||
| + | * Deployment(디플로이먼트, | ||
| === 네트워크 관리(Service) === | === 네트워크 관리(Service) === | ||
| Line 1791: | Line 1880: | ||
| === Kubernetes의 구조 === | === Kubernetes의 구조 === | ||
| + | * 마스터(Master); | ||
| + | * 데이터 스토어(etcd) | ||
| + | * 노드(Node); | ||
| ==== GCP를 사용한 Docker 애플리케이션 개발 ==== | ==== GCP를 사용한 Docker 애플리케이션 개발 ==== | ||
| Line 1799: | Line 1891: | ||
| === Docker 이미지 빌드(Cloud Container Builder) === | === Docker 이미지 빌드(Cloud Container Builder) === | ||
| + | * API 유효화하기 | ||
| + | * Google Kubernetes Engine API | ||
| + | * Google Container Registry API | ||
| + | * Google Cloud Build API | ||
| + | * Docker 이미지 빌드 파일; 빌드 스텝 -> 이미지 -> | ||
| ==== GCP를 사용한 Docker 애플리케이션 실행 환경 구축 ==== | ==== GCP를 사용한 Docker 애플리케이션 실행 환경 구축 ==== | ||
| Line 1824: | Line 1921: | ||
| === 가용성 관리 === | === 가용성 관리 === | ||
| + | * 콜드 스탠바이 방식; 스탠바이 기기는 장애가 발생하면 액티브 기기와 교체 | ||
| + | * 핫 스탠바이 방식; 액티브 기기에서 장애가 발생하면 자동으로 스탠바이 기기로 교체 | ||
| + | * 헬스 체크 | ||
| + | * ICMP 감시(레이어 3); Ping 등의 응답을 확인 | ||
| + | * 포트 감시(레이어 4); 웹서비스의 경우는 80번 포트로부터 응답이 있는지 확인 | ||
| + | * 서비스 감시(레이어 7); HTTP 통신을 확인하는 경우 특정 페이지가 올바르게 표시되는지를 확인 | ||
| + | * 로드 밸런싱(load balancing) | ||
| + | |||
| + | |||
| + | * Disaster Recovery System | ||
| + | * RTO(Recovery Time Objective); 서비스를 복구할 때까지 필요한 경과 시간 | ||
| + | * RPO(Recovery Point Objective); 재해 등으로 시스템이 정지되었을 때 어떤 시점까지 거슬러 올라가서 데이터를 복구시킬지에 대한 지표 | ||
| === 수용성(Capacity) 관리 === | === 수용성(Capacity) 관리 === | ||
| === 시스템 감시 === | === 시스템 감시 === | ||
| + | * 머신의 활동 감시 | ||
| + | * 서비스의 가동 감시 | ||
| + | * 서버/ | ||
| + | * 잡 감시 | ||
| + | * 장애 대응 | ||
| ==== GKE를 사용한 Docker 실행 환경의 운용 ==== | ==== GKE를 사용한 Docker 실행 환경의 운용 ==== | ||
| === Kubernetes의 스테이터스 확인 === | === Kubernetes의 스테이터스 확인 === | ||
| + | * 클러스터의 상태 확인 | ||
| + | * 노드의 스테이터스 확인 | ||
| + | * Pod의 상태 확인 | ||
| + | * 서비스 확인 | ||
| === Kubernetes의 Pod 관리 === | === Kubernetes의 Pod 관리 === | ||
| Line 1838: | Line 1956: | ||
| === Kubernetes의 리소스 작성/ | === Kubernetes의 리소스 작성/ | ||
| + | * 리소스 작성 | ||
| + | * 리소스 삭제 | ||
| + | * 리소스 변경 | ||
| === Kubernetes의 업그레이드/ | === Kubernetes의 업그레이드/ | ||
| Line 1928: | Line 2049: | ||
| ===== Google Cloud Platform 사용법 ===== | ===== Google Cloud Platform 사용법 ===== | ||
| ==== A.1 계정 등록 ==== | ==== A.1 계정 등록 ==== | ||
| + | * Google 계정, 신용카드 또는 은행 계좌 | ||
| + | |||
| + | - 등록 시작 | ||
| + | - 계정 정보 등록 | ||
| - | [1] 등록 시작 | ||
| - | [2] 계정 정보 등록 | ||
| ==== A.2 프로젝트 작성과 삭제 ==== | ==== A.2 프로젝트 작성과 삭제 ==== | ||
| - | [1] 프로젝트 작성 | + | - 프로젝트 작성 |
| - | [2] 프로젝트명 설정 | + | |
| - | [3] 프로젝트 삭제 | + | |
| ==== A.3 Cloud Console 사용법 ==== | ==== A.3 Cloud Console 사용법 ==== | ||
| - | 툴과 서비스 | + | * 툴과 서비스 |
| - | 대시보드 | + | |
| ==== A.4 Cloud Shell 사용법 ==== | ==== A.4 Cloud Shell 사용법 ==== | ||