Làm thế nào để mở rộng quy mô Docker container trong sản xuất


139

Vì vậy, gần đây tôi đã phát hiện ra công cụ tuyệt vời này, và nó nói

Docker là một dự án nguồn mở để dễ dàng tạo ra các container nhẹ, di động, tự cung cấp từ bất kỳ ứng dụng nào. Cùng một thùng chứa mà nhà phát triển xây dựng và thử nghiệm trên máy tính xách tay có thể chạy ở quy mô, trong sản xuất, trên máy ảo, kim loại trần, cụm OpenStack, đám mây công cộng và hơn thế nữa.

Giả sử tôi có một hình ảnh docker chạy Nginx và một trang web kết nối với cơ sở dữ liệu bên ngoài. Làm thế nào để tôi quy mô container trong sản xuất?

Câu trả lời:


585

Cập nhật: 2019-03-11

Trước hết cảm ơn những người đã nêu lên câu trả lời này trong nhiều năm qua.

Xin lưu ý rằng câu hỏi này đã được hỏi vào tháng 8 năm 2013, khi Docker vẫn là một công nghệ rất mới. Kể từ đó: Kubernetes được ra mắt vào tháng 6 năm 2014, Docker swarm đã được tích hợp vào công cụ Docker vào tháng 2 năm 2015, Amazon đã tung ra giải pháp container của nó , ECS, vào tháng 4 năm 2015 và Google đã ra mắt GKE vào tháng 8 năm 2015. Thật công bằng khi nói rằng cảnh quan sản xuất container đã thay đổi đáng kể.


Câu trả lời ngắn gọn là bạn phải viết logic của riêng bạn để làm điều này.

Tôi hy vọng loại tính năng này sẽ xuất hiện từ các dự án sau, được xây dựng trên đỉnh của docker và được thiết kế để hỗ trợ các ứng dụng trong sản xuất:

Cập nhật 1

Một dự án liên quan khác mà tôi mới phát hiện ra:

Cập nhật 2

Bản phát hành mới nhất Openstack chứa hỗ trợ quản lý các container Docker:

Cập nhật 3

Hệ thống quản lý phiên bản Docker

Và một bài thuyết trình về cách sử dụng các công cụ như Packer , Docker và Serf để cung cấp một mô hình cơ sở hạ tầng máy chủ bất biến

Cập nhật 4

Một bài viết gọn gàng về cách kết nối các container docker với nhau bằng serf :

Cập nhật 5

Chạy Docker trên Mesos bằng khung Marathon

Hướng dẫn phát triển Mesosphere Docker

Cập nhật 6

Chạy Docker trên Tsuru vì nó hỗ trợ triển khai docker-clustertrình lập lịch biểu riêng biệt

Cập nhật 7

Docker dựa trên môi trường phối hợp

maestro-ng

Cập nhật 8

ván sàn.io

Cập nhật 9

Google kubernetes

Cập nhật 10

Redhat đã tái cấu trúc PAAS openhift của họ để tích hợp Docker

Cập nhật 11

Một Docker NodeJS lib bao bọc dòng lệnh Docker và quản lý nó từ một tệp json.

Cập nhật 12

Dịch vụ container mới của Amazon cho phép nhân rộng trong cụm.

Cập nhật 13

Nói một cách nghiêm túc, Flocker không "mở rộng" các ứng dụng, nhưng nó được thiết kế để hoàn thiện chức năng liên quan đến việc tạo các thùng chứa trạng thái (chạy các dịch vụ cơ sở dữ liệu?) Trên nhiều máy chủ docker:

https://clusterhq.com/

Cập nhật 14

Một dự án để tạo các mẫu di động mô tả các ứng dụng Docker:

http://panamax.io/

Cập nhật 15

Dự án Docker hiện đang giải quyết vấn đề dàn nhạc (Xem thông báo )

Cập nhật 16

Spotify Helios

Xem thêm:

Cập nhật 17

Dự án Openstack hiện có một dự án "container dưới dạng dịch vụ" mới có tên Magnum:

Hiển thị rất nhiều hứa hẹn, cho phép thiết lập dễ dàng các khung phối hợp Docker như Kubernetes và Docker swarm.

Cập nhật 18

Rancher là một dự án đang trưởng thành nhanh chóng

http://rancher.com/

Giao diện người dùng đẹp và tập trung mạnh vào cơ sở hạ tầng Docker hyr điều chỉnh

Cập nhật 19

Các dự án lưới là một nhánh của Cloud Foundry để quản lý cụm container.

Cập nhật 20

Docker gần đây đã mua Tutum:

https://www.docker.com/tutum

Cập nhật 21

Trình quản lý gói cho các ứng dụng được triển khai trên Kubernetes .

http://mus.sh/

Cập nhật 22

Vamp là một nền tảng mã nguồn mở và tự lưu trữ để quản lý các kiến ​​trúc hướng dịch vụ (vi mô) dựa trên công nghệ container.

http://vamp.io/

Cập nhật 23

Bộ lập lịch dữ liệu-Aware phân phối, có sẵn cao

Từ những kẻ đã cho chúng tôi Vagrant và các công cụ mạnh mẽ khác.

Cập nhật 24

Giải pháp lưu trữ container cho AWS, mã nguồn mở và dựa trên Kubernetes

https://supergiant.io/

Cập nhật 25

Container dựa trên Apache Mesos được lưu trữ ở Đức

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

Và Docker Inc. cũng cung cấp dịch vụ lưu trữ container có tên Docker cloud

https://cloud.docker.com/

Cập nhật 26

Jelastic là một dịch vụ PAAS được lưu trữ tự động chia tỷ lệ các container.


1
openstack là một ứng cử viên khác cho danh sách này
ben schwartz 14/12/13

@benschwartz Rất đúng, nhưng chỉ trong bản phát hành mới nhất.
Đánh dấu O'Connor

Wow, Dock bào tôi đã giúp bạn Rockin Fock! Cảm ơn!
jredd

2
@ MarkO'Connor mesosphere/mesos-dockerDự án đã không được chấp nhận và được thay thế bởi mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen

1
Cũng đáng xem, từ Google - github.com/GoogleCloudPl
platform / kubernetes

42

Deis tự động mở rộng quy mô của Docker container (trong số những thứ khác).

Deis (phát âm là NGÀY-NGÀY) là một PaaS mã nguồn mở giúp dễ dàng triển khai và quản lý các ứng dụng trên các máy chủ của riêng bạn. Deis xây dựng dựa trên DockerCoreOS để cung cấp PaaS nhẹ với quy trình làm việc lấy cảm hứng từ Heroku.

Đây là quy trình làm việc của nhà phát triển:

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 tự động triển khai các bộ chứa Docker của bạn trên một cụm CoreOS và định cấu hình các bộ định tuyến Nginx để định tuyến các yêu cầu đến các bộ chứa Docker khỏe mạnh. Nếu một máy chủ chết, các container được tự động khởi động lại trên một máy chủ khác trong vài giây. Chỉ cần duyệt đến URL proxy hoặc sử dụng deis openđể nhấn ứng dụng của bạn.

Một số lệnh hữu ích khác:

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

Để thấy điều này trong thực tế, hãy xem video thiết bị đầu cuối tại http://deis.io/overview/ . Bạn cũng có thể tìm hiểu về các khái niệm Deis hoặc nhảy ngay vào việc triển khai PaaS riêng của mình .


3
+1 Tôi đang xem dự án của bạn với sự quan tâm. Hãy tiếp tục phát huy!
Đánh dấu O'Connor

19

Bạn có thể thử Tsuru. Tsuru là một PaaS mã nguồn mở lấy cảm hứng từ Heroku, và nó đã có sẵn một số sản phẩm được sản xuất tại Globo.com (chi nhánh internet của Công ty Truyền hình Phát thanh lớn nhất ở Brazil)

Nó quản lý toàn bộ luồng của một ứng dụng, kể từ khi tạo, triển khai, định tuyến (với hipache) với nhiều tính năng hay như cụm docker, chia tỷ lệ đơn vị, triển khai tách biệt, v.v.

Hãy xem tài liệu của chúng tôi dưới đây: http://docs.tsuru.io/

Ở đây bài đăng của chúng tôi bao gồm môi trường của chúng tôi: http://blog.tsuru.io/2014/04/04/rucky-tsuru-in-production-scaling-and-segregating-docker-containers/


18

Hãy xem Rancher.com - nó có thể quản lý nhiều máy chủ Docker và nhiều hơn nữa.


Rancher là mã nguồn mở và bao gồm một bản phân phối đầy đủ của Kubernetes. Nó cung cấp một nền tảng để chạy nhiều cụm khác nhau, quản lý cơ sở hạ tầng và đơn giản hóa đáng kể các container đang chạy.
Shannon Williams

9

Một cách tiếp cận hợp lý để nhân rộng Docker có thể là:

  1. Mỗi dịch vụ sẽ là một container docker
  2. Phát hiện dịch vụ container nội bộ được quản lý thông qua các liên kết ( tính năng mới từ docker 0.6.5 )
  3. Các container sẽ được triển khai thông qua Dokku
  4. Các ứng dụng sẽ được quản lý thông qua Shipyard , đến lượt nó sử dụng hipache

Một dự án nguồn mở docker khác từ Yandex:


Bạn có thể cung cấp thêm lời khuyên nào về cách sử dụng Dokku cùng với Shipyard không?
djskinner


2

Những kẻ Openshift cũng tạo ra một dự án. Bạn có thể tìm thêm thông tin ở đây , thử container và thông tin chi tiết tại đây . Vấn đề duy nhất là giải pháp là Redhat centric cho bây giờ :)


2

Trong khi chúng tôi là những người hâm mộ lớn của Deis (deis.io) và đang tích cực triển khai nó, có những giải pháp triển khai kiểu Heroku khác như PaaS ngoài kia, bao gồm:

Longshoreman từ folks Wayfinder:

https://github.com/longshoreman/longshoreman

Decker từ folks CloudCredo, sử dụng CloudFoundry:

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

Đối với việc dàn dựng thẳng, dự án Centurion mã nguồn mở của NewRelic có vẻ khá hứa hẹn:

https://github.com/newrelic/centurion



1

Panamax: Quản lý Docker cho con người. panamax.io

Hình: Môi trường phát triển nhanh, bị cô lập bằng Docker. vả


Tôi nghĩ rằng Fig chưa hỗ trợ triển khai nhiều máy chủ.
lolski

Là vậy sao! Vì vậy, nó chỉ giúp phối hợp thiết lập các ứng dụng bên trong một máy chủ duy nhất?
fatuhoku 23/12/14

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.