Bagaimana skala kontainer Docker dalam produksi

139

Jadi saya baru-baru ini menemukan alat luar biasa ini, dan katanya

Docker adalah proyek sumber terbuka untuk dengan mudah membuat wadah yang ringan, portabel, dan mandiri dari aplikasi apa pun. Wadah yang sama yang dibuat oleh pengembang dan diuji pada laptop dapat berjalan pada skala, dalam produksi, pada VM, bare metal, klaster OpenStack, cloud publik dan banyak lagi.

Katakanlah saya memiliki gambar buruh pelabuhan yang menjalankan Nginx dan situs web terhubung ke basis data eksternal. Bagaimana cara skala wadah dalam produksi?

James Lin
sumber

Jawaban:

586

Pembaruan: 2019-03-11

Pertama-tama, terima kasih untuk mereka yang telah mengangkat jawaban ini selama bertahun-tahun.

Perlu diketahui bahwa pertanyaan ini diajukan pada Agustus 2013, ketika Docker masih merupakan teknologi yang sangat baru. Sejak itu: Kubernetes diluncurkan pada Juni 2014, Docker swarm diintegrasikan ke dalam engine Docker pada Februari 2015, Amazon meluncurkan solusi kontainernya, ECS, pada April 2015 dan Google meluncurkan GKE pada Agustus 2015. Wajar untuk mengatakan lanskap wadah produksi memiliki berubah secara substansial.


Jawaban singkatnya adalah Anda harus menulis sendiri logika Anda untuk melakukan ini.

Saya mengharapkan fitur semacam ini muncul dari proyek-proyek berikut, dibangun di atas buruh pelabuhan, dan dirancang untuk mendukung aplikasi dalam produksi:

Perbarui 1

Proyek terkait lainnya yang baru-baru ini saya temukan:

Perbarui 2

Openstack rilis terbaru berisi dukungan untuk mengelola wadah Docker:

Perbarui 3

Sistem untuk mengelola instance Docker

Dan presentasi tentang cara menggunakan alat-alat seperti Packer , Docker dan Serf untuk memberikan pola infrastruktur server yang tidak berubah

Perbarui 4

Artikel yang bagus tentang cara menyatukan kontainer dengan menggunakan budak :

Perbarui 5

Jalankan Docker di Mesos menggunakan kerangka Marathon

Tutorial Pengembang Dock Mesosphere

Perbarui 6

Jalankan Docker di Tsuru karena mendukung docker-cluster dan penyebaran scheduler terpisah

Perbarui 7

Orkestrasi lingkungan berbasis Docker

maestro-ng

Perbarui 8

decking.io

Perbarui 9

Kubernet Google

Perbarui 10

Redhat telah refactored PAAS openshift mereka untuk mengintegrasikan Docker

Perbarui 11

A Docker NodeJS lib membungkus baris perintah Docker dan mengelolanya dari file json.

Perbarui 12

Layanan peti kemas baru Amazon memungkinkan penskalaan di kluster.

Perbarui 13

Tegasnya Flocker tidak "skala" aplikasi, tetapi dirancang untuk fufil fungsi terkait pembuatan kontainer stateful (menjalankan layanan database?) Portabel di beberapa host buruh pelabuhan:

https://clusterhq.com/

Perbarui 14

Sebuah proyek untuk membuat templat portabel yang menggambarkan aplikasi Docker:

http://panamax.io/

Perbarui 15

Proyek Docker sekarang menangani orkestrasi secara asli (Lihat pengumuman )

Perbarui 16

Helios Spotify

Lihat juga:

Perbarui 17

Proyek Openstack sekarang memiliki proyek "wadah sebagai layanan" baru bernama Magnum:

Menunjukkan banyak janji, memungkinkan pengaturan kerangka kerja orkestrasi Docker yang mudah seperti Kubernetes dan Docker swarm.

Perbarui 18

Rancher adalah proyek yang matang dengan cepat

http://rancher.com/

UI bagus dan fokus kuat pada infrastruktur Docker hyrbrid

Perbarui 19

Proyek Lattice adalah cabang dari Cloud Foundry untuk mengelola cluster kontainer.

Perbarui 20

Docker baru-baru ini membeli Tutum:

https://www.docker.com/tutum

Perbarui 21

Manajer paket untuk aplikasi yang digunakan di Kubernetes .

http://helm.sh/

Perbarui 22

Vamp adalah platform open source dan self-host untuk mengelola arsitektur berorientasi layanan yang mengandalkan teknologi wadah.

http://vamp.io/

Perbarui 23

Penjadwal Datacenter-Aware Terdistribusi, Sangat Tersedia

Dari orang-orang yang memberi kami Vagrant dan alat kuat lainnya.

Perbarui 24

Solusi hosting kontainer untuk AWS, open source, dan berdasarkan Kubernetes

https://supergiant.io/

Perbarui 25

Host berbasis wadah Apache Mesos berada di Jerman

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

Dan Docker Inc. juga menyediakan layanan hosting kontainer yang disebut Docker cloud

https://cloud.docker.com/

Perbarui 26

Jelastic adalah layanan host PAAS yang menimbang wadah secara otomatis.

Mark O'Connor
sumber
1
openstack adalah kandidat lain untuk daftar ini
ben schwartz
@ Benschwartz Sangat benar, tetapi hanya di rilis terbaru.
Mark O'Connor
Wow, Dok — aku — kau Rockin Fock! Terima kasih!
jredd
2
@ MarkO'Connor mesosphere/mesos-dockerProyek ini telah ditinggalkan dan digantikan oleh mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen
1
Juga patut dilihat, dari Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger
42

Deis mengotomatiskan penskalaan wadah Docker (antara lain).

Deis (diucapkan DAY-iss) adalah PaaS open source yang memudahkan untuk menyebarkan dan mengelola aplikasi di server Anda sendiri. Deis dibangun di atas Docker dan CoreOS untuk menyediakan PaaS yang ringan dengan alur kerja yang terinspirasi oleh Heroku.

Inilah alur kerja pengembang:

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 secara otomatis menyebarkan wadah Docker Anda di seluruh cluster CoreOS dan mengkonfigurasi router Nginx untuk merutekan permintaan ke wadah Docker yang sehat. Jika sebuah host mati, kontainer secara otomatis restart pada host lain dalam hitungan detik. Cukup telusuri ke URL proxy atau gunakan deis openuntuk mencapai aplikasi Anda.

Beberapa perintah lain yang bermanfaat:

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

Untuk melihat ini dalam aksi, lihat video terminal di http://deis.io/overview/ . Anda juga dapat mempelajari tentang konsep Deis atau langsung menggunakan PaaS pribadi Anda sendiri .

gabrtv
sumber
3
+1 Saya mengamati proyek Anda dengan penuh minat. Pertahankan kerja bagus!
Mark O'Connor
19

Anda dapat mencoba Tsuru. Tsuru adalah PaaS opensource yang terinspirasi oleh Heroku, dan sudah ada beberapa produk dalam produksi di Globo.com (lengan internet dari Perusahaan Televisi Siaran terbesar di Brasil)

Ini mengelola seluruh aliran aplikasi, karena pembuatan wadah, penyebaran, perutean (dengan hipache) dengan banyak fitur bagus seperti docker cluster, penskalaan unit, penyebaran terpisah, dll.

Lihatlah dokumentasi kami di bawah ini: http://docs.tsuru.io/

Berikut posting kami yang mencakup lingkungan kami: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Magno Torres
sumber
18

Lihat Rancher.com - ini dapat mengelola beberapa host Docker dan banyak lagi.

dublx
sumber
Rancher adalah open source, dan termasuk distribusi penuh Kubernetes. Ini menyediakan platform untuk menjalankan banyak kluster yang berbeda, mengelola infrastruktur, dan secara dramatis menyederhanakan wadah yang berjalan.
Shannon Williams
9

Pendekatan yang masuk akal untuk menskalakan Docker bisa berupa:

  1. Setiap layanan akan menjadi wadah buruh pelabuhan
  2. Penemuan layanan kontainer dikelola melalui tautan ( fitur baru dari docker 0.6.5 )
  3. Kontainer akan dikerahkan melalui Dokku
  4. Aplikasi akan dikelola melalui Galangan yang pada gilirannya menggunakan hipache

Proyek sumber terbuka buruh pelabuhan lainnya dari Yandex:

tommasop
sumber
Bisakah Anda memberikan saran lebih lanjut tentang cara menggunakan Dokku bersama Galangan Kapal?
djskinner
2

Orang openshift juga membuat proyek. Anda dapat menemukan informasi lebih lanjut di sini , coba wadah uji dan info detail di sini . Satu-satunya masalah adalah solusinya adalah Redhat centric untuk saat ini :)

Kunthar
sumber
1

Lihatlah juga pada etcd dan Konsul .

Ricardo Silva
sumber
1

Panamax: Manajemen Docker untuk Manusia. panamax.io

Gambar: Lingkungan pengembangan yang cepat dan terisolasi menggunakan Docker. fig.sh

rus1
sumber
Saya pikir Fig belum mendukung penyebaran multi-host.
lolski
Apakah begitu! Jadi itu hanya membantu mengatur pengaturan aplikasi di dalam satu host?
fatuhoku
1

Satu opsi yang tidak disebutkan dalam posting lain adalah Helios. Itu dibangun oleh spotify dan tidak mencoba melakukan terlalu banyak.

https://github.com/spotify/helios

Chris Dail
sumber