프로덕션에서 Docker 컨테이너를 확장하는 방법


139

최근에이 멋진 도구를 발견했습니다.

Docker는 모든 응용 프로그램에서 가볍고 휴대 가능하며 자체적으로 충분한 컨테이너를 쉽게 만들 수있는 오픈 소스 프로젝트입니다. 개발자가 랩톱에서 빌드하고 테스트하는 것과 동일한 컨테이너는 규모, 프로덕션, VM, 베어 메탈, OpenStack 클러스터, 퍼블릭 클라우드 등에서 실행될 수 있습니다.

Nginx를 실행하는 도커 이미지가 있고 웹 사이트가 외부 데이터베이스에 연결되어 있다고 가정 해 봅시다. 프로덕션 환경에서 컨테이너를 어떻게 확장합니까?

답변:


587

업데이트 : 2019-03-11

수년에 걸쳐이 답변을지지 해주신 분들께 감사드립니다.

Docker가 여전히 매우 새로운 기술이었던 2013 년 8 월에이 질문이 제기되었습니다. 그 이후 : Kubernetes 는 2014 년 6 월에 출시되었으며 Docker swarm 은 2015 년 2 월에 Docker 엔진에 통합되었으며, Amazon은 2015 년 4 월에 컨테이너 솔루션 ECS를 출시했으며 , 2015 년 8 월 Google은 GKE출시했습니다 . 크게 변경되었습니다.


짧은 대답은 이것을하기 위해 자신의 논리를 작성해야한다는 것입니다.

이러한 종류의 기능은 도커 위에 구축되고 프로덕션 응용 프로그램을 지원하도록 설계된 다음 프로젝트에서 나타날 것으로 기대합니다.

업데이트 1

내가 최근에 발견 한 다른 관련 프로젝트 :

업데이트 2

최신 릴리스 Openstack에는 Docker 컨테이너 관리를 지원합니다.

업데이트 3

Docker 인스턴스 관리 시스템

그리고 Packer , Docker 및 Serf 와 같은 도구를 사용 하여 불변의 서버 인프라 패턴을 제공하는 방법에 대한 프레젠테이션

업데이트 4

serf를 사용하여 도커 컨테이너를 연결하는 방법에 대한 깔끔한 기사 :

업데이트 5

Marathon 프레임 워크를 사용하여 Mesos에서 Docker 실행

Mesosphere Docker 개발자 튜토리얼

업데이트 6

docker-cluster분리 된 스케줄러 배포를 지원하므로 Tsuru 에서 Docker를 실행하십시오.

업데이트 7

도커 기반 환경 오케스트레이션

마에스트로

업데이트 8

decking.io

업데이트 9

구글 쿠 버네 티스

업데이트 10

Redhat은 Openshift PAAS를 리팩터링하여 Docker를 통합했습니다.

업데이트 11

Docker 명령 줄을 래핑하고 json 파일에서 관리하는 Docker NodeJS lib

업데이트 12

Amazon의 새로운 컨테이너 서비스를 통해 클러스터를 확장 할 수 있습니다.

업데이트 13

엄밀히 말하면 Flocker 는 응용 프로그램을 "확장"하지 않지만 여러 도커 호스트에서 상태 저장 컨테이너 (데이터베이스 서비스 실행 중)를 이식 가능하게 만드는 관련 기능을 수행하도록 설계되었습니다.

https://clusterhq.com/

업데이트 14

Docker 응용 프로그램을 설명하는 이식 가능한 템플릿을 만드는 프로젝트 :

http://panamax.io/

업데이트 15

Docker 프로젝트는 이제 기본적으로 오케스트레이션을 해결하고 있습니다 ( 공지 참조 ).

업데이트 16

Spotify Helios

또한보십시오:

업데이트 17

Openstack 프로젝트에는 이제 Magnum이라는 새로운 "서비스 컨테이너"프로젝트가 있습니다.

많은 약속을 보여주고 Kubernetes 및 Docker swarm과 같은 Docker 오케스트레이션 프레임 워크를 쉽게 설정할 수 있습니다.

업데이트 18

Rancher는 빠르게 성숙하고있는 프로젝트입니다

http://rancher.com/

멋진 UI와 hyrbrid Docker 인프라에 중점

업데이트 19

격자 프로젝트는 컨테이너 클러스터를 관리하기위한 클라우드 파운드리의 파생물이다.

업데이트 20

Docker는 최근 Tutum을 구입했습니다.

https://www.docker.com/tutum

업데이트 21

Kubernetes에 배포 된 응용 프로그램의 패키지 관리자 .

http://helm.sh/

업데이트 22

Vamp는 컨테이너 기술에 의존하는 (마이크로) 서비스 지향 아키텍처를 관리하기위한 오픈 소스 및 자체 호스팅 플랫폼입니다.

http://vamp.io/

업데이트 23

분산 된 고 가용성 데이터 센터 인식 스케줄러

우리에게 Vagrant와 다른 강력한 도구를 준 사람들로부터.

업데이트 24

Kubernetes 기반 AWS, 오픈 소스를위한 컨테이너 호스팅 솔루션

https://supergiant.io/

업데이트 25

독일에 위치한 Apache Mesos 기반 컨테이너 호스팅

https://sloppy.io/features/#features

Docker Inc.는 Docker 클라우드라는 컨테이너 호스팅 서비스도 제공합니다.

https://cloud.docker.com/

업데이트 26

Jelastic 은 컨테이너를 자동으로 확장하는 호스팅 된 PAAS 서비스입니다.


1
OpenStack은이 목록에 대한 또 다른 후보
벤 슈워츠

@benschwartz 매우 사실이지만 최신 릴리스에서만 가능합니다.
마크 오코너

와우, 도크 미, 당신은 락킹 폭스! 감사!
jredd

2
@ MarkO'Connor이 mesosphere/mesos-docker프로젝트는 더 이상 사용되지 않으며 다음으로 대체되었습니다 mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen

1
구글에서 볼만한 가치도 있습니다 -github.com/GoogleCloudPlatform/kubernetes
mjsalinger

42

Deis 는 Docker 컨테이너의 스케일링을 자동화합니다 (다른 것들 중에서도).

Deis (DAY-iss로 발음)는 오픈 소스 PaaS로, 자신의 서버에서 애플리케이션을 쉽게 배포하고 관리 할 수 ​​있습니다. Deis는 DockerCoreOS 를 기반으로 Heroku에서 영감을 얻은 워크 플로와 함께 경량 PaaS를 제공합니다.

개발자 워크 플로우는 다음과 같습니다.

deis create myapp                      # create a new deis app called "myapp"
git push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

Deis는 CoreOS 클러스터에 Docker 컨테이너를 자동으로 배포하고 Nginx 라우터를 구성하여 요청을 정상적인 Docker 컨테이너로 라우팅합니다. 호스트가 죽으면 몇 초 안에 다른 호스트에서 컨테이너가 자동으로 다시 시작됩니다. 프록시 URL을 찾아 deis open보거나 앱을 사용 하십시오.

다른 유용한 명령들 :

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

이를 실제로 보려면 http://deis.io/overview/ 에서 터미널 비디오를 확인 하십시오 . 또한 Deis 개념에 대해 배우 거나 개인 PaaS를 직접 배포 할 수 있습니다 .


3
+1 프로젝트를 관심있게보고 있습니다. 좋은 일을 계속하십시오!
Mark O'Connor

19

당신은 쓰루를 시도 할 수 있습니다. Tsuru는 Heroku에서 영감을 얻은 오픈 소스 PaaS이며 이미 Globo.com (브라질에서 가장 큰 방송 텔레비전 회사의 인터넷 암)에서 일부 제품을 생산하고 있습니다.

컨테이너 생성, 배포, 도커 클러스터, 단위 확장, 분리 배포 등과 같은 많은 훌륭한 기능을 갖춘 라우팅 (힙통 포함)으로 인해 응용 프로그램의 전체 흐름을 관리합니다.

다음 문서를 살펴보십시오. http://docs.tsuru.io/

여기 우리의 환경을 다루는 게시물 : http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/


18

Rancher.com 에서 여러 Docker 호스트 등을 관리 할 수 ​​있습니다.


Rancher는 오픈 소스이며 Kubernetes의 전체 배포판을 포함합니다. 다양한 클러스터를 실행하고 인프라를 관리 할 수있는 플랫폼을 제공하며 실행중인 컨테이너를 대폭 간소화합니다.
Shannon Williams

9

Docker를 확장하는 합리적인 방법은 다음과 같습니다.

  1. 각 서비스는 도커 컨테이너입니다.
  2. 링크를 통해 관리되는 내부 컨테이너 서비스 검색 ( docker 0.6.5의 새로운 기능 )
  3. 컨테이너는 Dokku를 통해 배포됩니다
  4. 힙 야드를 사용하는 조선소 를 통해 응용 프로그램을 관리합니다.

Yandex의 또 다른 도커 오픈 소스 프로젝트 :


조선소와 함께 Dokku를 사용하는 방법에 대한 추가 조언이 있습니까?
djskinner



2

우리는 Deis (deis.io)의 열성 팬이며 적극적으로 배포하는 동안 PaaS 스타일 배포 솔루션과 같은 다른 Heroku가 있습니다.

Wayfinder 사람들의 Longshoreman :

https://github.com/longshoreman/longshoreman

CloudFoundry를 사용하여 CloudCredo 직원의 데커 :

http://www.cloudcredo.com/decker-docker-cloud-foundry/

곧은 오케스트레이션과 관련하여 NewRelic의 오픈 소스 Centurion 프로젝트는 매우 유망한 것으로 보입니다.

https://github.com/newrelic/centurion



1

Panamax : 인간을위한 도커 관리. panamax.io

그림 : Docker를 사용한 빠르고 고립 된 개발 환경. 무화과


Fig은 아직 다중 호스트 배포를 지원하지 않는다고 생각합니다.
lolski

그렇습니다! 그렇다면 단일 호스트 내부에서 응용 프로그램 설정을 조정하는 데 도움이됩니까?
fatuhoku

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.