[docker] Docker Compose와 Kubernetes의 차이점은 무엇입니까?

Docker, Google Cloud 및 Kubernetes에 뛰어 들었을 때 아직 세 가지를 모두 이해하지 못하면이 제품이 겹치지 만 호환되지 않는 것 같습니다.

예를 들어 docker-compose.yml앱을 Kubernetes에 배포 할 수 있도록 파일을 다시 작성해야합니다.

누군가 Docker, Docker Compose, Docker Cloud 및 Kubernetes가 겹치는 위치와 서로 의존하는 위치에 대한 대략적인 수준의 설명을 제공 할 수 있습니까?



답변

도커 :

  • Docker는 애플리케이션을 컨테이너화 할 수있는 컨테이너 기술입니다.
  • Docker는 다른 기술을 사용하는 핵심입니다.

도커 작성

  • Docker Compose를 사용하면 여러 Docker 컨테이너를 구성하고 시작할 수 있습니다.
  • Docker Compose는 여러 Docker 컨테이너를 시작하고을 사용하여 개별적으로 시작하지 않으려는 경우 주로 도우미로 사용 docker run ...됩니다.
  • Docker Compose는 동일한 호스트 에서 컨테이너를 시작하는 데 사용됩니다 .
  • Docker Compose는 단일 docker 컨테이너를 빌드하고 실행할 때 모든 선택적 매개 변수 대신 사용 됩니다 .

도커 스웜

  • Docker Swarm은 여러 호스트에서 컨테이너를 실행하고 연결하기위한 것 입니다.
  • Docker Swarm은 컨테이너 클러스터 관리 및 오케스트레이션 도구입니다.
  • 여러 호스트에서 실행되는 컨테이너를 관리하고 스케일링, 충돌시 새 컨테이너 시작, 컨테이너 네트워킹 …
  • Docker Swarm은 프로덕션에서 Docker입니다. 그것은이다 기본 부두 노동자의 오케스트레이션 도구 도커 엔진에 포함된다.
  • stack 파일이라는 Docker Swarm 파일은 Docker Compose 파일과 매우 유사합니다.

쿠 버네 티스

  • Kubernetes는 Google에서 개발 한 컨테이너 오케스트레이션 도구 입니다.
  • Kubernetes의 목표는 Docker Swarm의 목표와 매우 유사합니다.

도커 클라우드

  • 클라우드 서버 또는 로컬 서버에서 컨테이너를 빌드하고 실행할 수 유료 엔터프라이즈 도커 서비스입니다.
  • 웹 UI와 컨테이너를 실행하고 관리하는 중앙 제어판을 제공하는 동시에 사용자 친화적 인 웹 인터페이스에서 모든 Docker 기능을 제공합니다.

최신 정보:

Docker 클라우드가 “부분적으로”중단되었습니다

애플리케이션, 노드 및 스웜 클러스터 관리를 제공하는 Docker Cloud의 서비스는 5 월 21 일에 종료됩니다. [2020] … 자동화 된 빌드 및 레지스트리 스토리지 서비스는 영향을받지 않으며 계속 사용할 수 있습니다.


답변

@ yamenk ‘s 외에도 답변 Kubernetes를 이해하는 여행에 도움이 될 수있는 몇 가지 세부 정보를 여기에 추가하고 싶습니다.

짧은 답변:

  • docker-compose:는 다중 컨테이너 애플리케이션 을 설명하는 YAML 파일을 사용 하는 도구로 , 각 컨테이너에 대해 여러 명령 을 입력하지 않고도 모든 컨테이너 를 작성 , 시작 / 중지 , 제거 할 수 있습니다 .docker ...
  • Kubernetes: 컨테이너화 된 워크로드 및 서비스 를 관리하기 위한 플랫폼 으로 선언적 구성 및 자동화를 모두 용이하게합니다. 계속 읽고 계십니까 …

도커 작성

(문서에서) : Compose는 다중 컨테이너 Docker 응용 프로그램을 정의하고 실행하기위한 도구입니다. Compose에서는 YAML 파일을 사용하여 응용 프로그램 서비스를 구성합니다. 그런 다음 단일 명령으로 구성에서 모든 서비스를 작성하고 시작합니다.

작성에는 애플리케이션의 전체 수명주기를 관리하는 명령이 있습니다.

  • 서비스 시작, 중지 및 재 구축
  • 실행중인 서비스 상태보기
  • 실행중인 서비스의 로그 출력 스트리밍
  • 서비스에서 일회용 명령 실행

쿠 버네 티스

( 소개에서 Kubernetes까지 ) : Kubernetes는 Docker Swarm, Mesos Marathon, Amazon ECS, Hashicorp Nomad 와 같은 컨테이너 오케 스트레이터 입니다. 컨테이너 오케 스트레이터는 호스트를 그룹화하여 클러스터를 형성하고 응용 프로그램을 확인하는 데 도움이되는 도구입니다.

  • 내결함성,
  • 확장 할 수 있으며 주문형으로 수행 할 수 있습니다.
  • 자원을 최적으로 사용하다
  • 다른 응용 프로그램을 자동으로 검색하고 서로 통신 할 수 있습니다.
  • 외부 세계에서 접근 가능
  • 다운 타임없이 업데이트 / 롤백 할 수 있습니다.

많은 사람들은 Kubernetes가 배우기가 어렵다고 주장합니다. 일련의 문제를 해결하고 사람들이 모든 전제 조건을 몰라도 이해하려고하기 때문입니다. 이것은 복잡합니다. 다음과 같은 개념 / 용어를 읽으면서 퍼즐 조각을 모으십시오. 이 프로세스는 Kubernetes가 해결하려는 문제의 종류를 이해하는 데 도움이됩니다.

  • 12 단계 앱,
  • 자동 빈 포장,
  • 자가 치유 메커니즘
  • 수평 스케일링,
  • 서비스 검색 및로드 밸런싱
  • 자동 롤아웃 및 롤백
  • 청록색 배포 / 카나리아 배포
  • 비밀 및 구성 관리
  • 스토리지 오케스트레이션

컨테이너와 그 관리에는 많은 다른 것들이 있기 때문에 Cloud Native 환경을 주시하십시오.

대화식 버전 : landscape.cncf.io/

여기에 이미지 설명을 입력하십시오

업데이트

2020 년 5 월 : 개방형 표준의 Docker Compose Specification

오픈 소스 커뮤니티의 AWS, Microsoft 및 기타 기관과 협력하여 기존 Compose 플랫폼 외에도 Kubernetes 및 Amazon ECS와 같은 클라우드 네이티브 플랫폼을 지원하도록 Compose Specification을 확장했습니다. 여기 더 : blog / compose-spec.io


답변

동일한 호스트를 가진 컨테이너를 네트워킹하는 경우 docker compose 로 이동하십시오 .

여러 호스트에서 컨테이너를 네트워킹하는 경우 kubernetes 로 이동 하십시오 .


답변

첫 번째 차이점은 컨테이너 엔진과 컨테이너 오케 스트레이터입니다.

docker 컨테이너 엔진이므로 개발 목적으로 PC에서 로컬로 최대 하나의 컨테이너를 빌드하고 실행할 수 있습니다.

docker-compose 여러 컨테이너를 실행하고 Docker 엔진 기능을 통해 볼륨과 네트워킹을 공유하고 로컬에서 실행되어 서비스 구성을 에뮬레이션하고 클러스터에서 원격으로 실행하는 Docker 유틸리티입니다.

Kubernetes는 컨테이너 오케스트레이션 플랫폼으로, 컨테이너를 실행하고 엔진 기능을 향상시켜 복잡한 애플리케이션 (사용자 또는 클라우드 공급자가 관리하는 PaaS의 종류)을 제공하도록 컨테이너를 구성하고 확장 할 수 있습니다. 주요 Kubernetes 기능은 컨테이너를 사용하여 인프라와 애플리케이션을 분리하는 것이며 Docker가 rkt 또는 cri-o로 컨테이너를 실행할 수있는 다른 엔진에도 개방되어 있습니다.

Docker 클라우드는 PaaS 오퍼입니다. docker 엔진 API를 .

이제 요구 사항, 인프라 제어 수준 및 대상 청중에 따라 베어 메탈의 Kubernetes 또는 Azure ACS 또는 Google GKE 등을 사용할 수 있습니다.

이것이 도움이 되었기를 바랍니다 🙂


답변

Docker Compose 는 프로덕션 준비 도구가 아닙니다. PoC 또는 개발 환경에서는 훌륭하지만 심각한 프로덕션 용도로 사용되는 테이블 스테이크에는 많은 기능이 없습니다. Swarm은 더 생산 준비가되어 있지만 Greenfield 시나리오에서는 Swarm에 투자하지 않습니다. Kubernetes는 Docker Desktop에 포함되어 있으며 모든 주요 클라우드 제공 업체가 제공하는 것으로 입증되어 오케스트레이션 전투에서 승리했습니다. Kubernetes는 훨씬 더 유능하며 더 많은 커뮤니티 및 기업 지원을 제공합니다.

Pluralsight, Linux Academy 등에서 사용할 수있는 Kubernetes 튜토리얼에 대해 알아보고 선택한 클라우드 플랫폼 (EKS, AKS, GKE 등)에서 사용할 클러스터를 회전시키는 것이 좋습니다. 베어 메탈에서 스핀 업을 시도하는 경우 OpenShift를 살펴보십시오. 그러나이 설정에서 Kubernetes의 마법을 잃어버린다는 것을 인식하십시오.


답변

도커 작성 :

A의 docker-compose.yml파일의 각 항목은 선택적으로 얻을 수있는 docker-compose이미지를 구축 할 수 있습니다. 각 항목은 구축하려는 단일 컨테이너를 나타낼 수 있으며 각 항목은 네트워킹 요구 사항 또는 포트를 정의합니다.

쿠 버네 티스 :

Kubernetes는 모든 이미지가 이미 빌드 될 것으로 예상하고 개체 당 하나의 구성 파일이 생성되도록하고 모든 네트워킹을 수동으로 설정해야합니다.

따라서 이미지가 Docker Hub에서 호스팅되도록하고 컨테이너를 만들기위한 구성 파일 하나와 네트워킹을 설정하기위한 구성 파일 하나를 만듭니다.


답변

Docker-Compose는 볼륨, 네트워킹, 실행 명령 등과 같은 환경으로 하나 이상의 컨테이너를 사전 정의한 배치 파일입니다.

반면 Kubernetes는 도커 컨테이너 및 기타 마이크로 서비스를 오케스트레이션하고 여러 노드에서 확장 가능하고 신뢰할 수있는 시스템입니다.