Memperbarui
Docker baru -baru ini mengumumkan alat baru yang disebut Swarm untuk orkestrasi Docker.
Kawanan memungkinkan Anda melakukan "bergabung" dengan beberapa daemon buruh pelabuhan: Anda pertama kali membuat swarm, memulai swarm manager di satu mesin, dan meminta daemon buruh pelabuhan "bergabung" dengan swarm manager menggunakan pengenal swarm. Klien buruh pelabuhan terhubung ke swarm manager seolah-olah itu adalah server buruh pelabuhan biasa.
Ketika sebuah kontainer dimulai dengan Swarm, itu secara otomatis ditetapkan ke node gratis yang memenuhi batasan apa pun yang telah ditentukan. Contoh berikut diambil dari postingan blog:
$ docker run -d -P -e constraint:storage=ssd mysql
Salah satu batasan yang didukung adalah "node"
memungkinkan Anda menyematkan container ke nama host tertentu. Gerombolan itu juga menyelesaikan tautan di seluruh node.
Dalam pengujian saya, saya mendapat kesan bahwa Swarm belum bekerja dengan volume di lokasi tetap dengan sangat baik (atau setidaknya proses menautkannya tidak terlalu intuitif), jadi ini adalah sesuatu yang perlu diingat.
Swarm sekarang dalam fase beta.
Hingga saat ini, Pola Ambassador adalah satu-satunya pendekatan bawaan Docker untuk penemuan layanan host jarak jauh. Pola ini masih dapat digunakan dan tidak memerlukan sihir apa pun selain Docker biasa karena pola tersebut terdiri dari satu atau beberapa kontainer tambahan yang bertindak sebagai proxy.
Selain itu, ada beberapa ekstensi pihak ketiga untuk membuat Docker berkemampuan cluster. Solusi pihak ketiga meliputi:
- Menghubungkan jembatan jaringan Docker pada dua host, solusi ringan dan beragam ada, tetapi umumnya dengan beberapa peringatan
- Penemuan berbasis DNS misalnya dengan skydock dan SkyDNS
- Alat manajemen Docker seperti Shipyard , dan alat orkestrasi Docker. Lihat pertanyaan ini untuk daftar lengkap: Bagaimana menskalakan kontainer Docker dalam produksi
PERBARUI 3
Libswarm telah diubah namanya menjadi swarm dan sekarang menjadi aplikasi terpisah.
Berikut adalah demo halaman github untuk digunakan sebagai titik awal:
UPDATE 2
Pendekatan resmi sekarang adalah menggunakan libswarm, lihat demo di sini
MEMPERBARUI
Ada intisari yang bagus untuk komunikasi host openvswitch di buruh pelabuhan menggunakan pendekatan yang sama.
Untuk memungkinkan penemuan layanan, ada pendekatan menarik berdasarkan DNS yang disebut skydock .
Ada juga screencast .
Ini juga artikel yang bagus menggunakan potongan puzzle yang sama tetapi juga menambahkan vlan di atas:
http://fbevmware.blogspot.it/2013/12/coupling-docker-and-open-vswitch.html
Penambalan tidak ada hubungannya dengan kekuatan solusi. Docker sebenarnya hanyalah sejenis DSL di Linux Containers dan kedua solusi dalam artikel ini hanya melewati beberapa pengaturan otomatis Docker dan kembali langsung ke Linux Containers.
Jadi Anda dapat menggunakan solusi dengan aman dan menunggu untuk dapat melakukannya dengan cara yang lebih sederhana setelah Docker akan mengimplementasikannya.
sumber
Menenun adalah teknologi jaringan virtual Docker baru yang bertindak sebagai sakelar ethernet virtual melalui TCP / UDP - yang Anda butuhkan hanyalah container Docker yang menjalankan Weave di host Anda.
Yang menarik disini adalah
Ini mengarah ke skenario menarik seperti
Misalnya, ada contoh panduan tentang cara membuat cluster Cassandra multi-node di laptop Anda dan beberapa host cloud (EC2) dengan dua perintah per host. Saya meluncurkan cluster CoreOS dengan AWS CloudFormation, menginstal weave di masing-masing in / home / core, ditambah VM buruh pelabuhan gelandangan laptop saya, dan mendapatkan cluster dalam waktu kurang dari satu jam. Laptop saya memiliki firewall tetapi Weave tampaknya baik-baik saja dengan itu, hanya terhubung ke sesama EC2.
sumber
Memperbarui
Docker 1.12 berisi apa yang disebut mode swarm dan juga menambahkan
service
abstraksi. Mereka mungkin tidak cukup dewasa untuk setiap kasus penggunaan, tapi saya sarankan Anda untuk terus mengamati mereka. Mode swarm setidaknya membantu dalam pengaturan multi-host, yang tidak selalu membuat penautan lebih mudah. Server DNS internal Docker (sejak 1.11) akan membantu Anda mengakses nama kontainer, jika mereka terkenal - artinya nama yang dihasilkan dalam konteks Swarm tidak akan mudah untuk diatasi.Dengan rilis Docker 1.9 Anda akan mendapatkan jaringan multi host yang dibangun . Mereka juga menyediakan contoh skrip untuk menyediakan cluster kerja dengan mudah.
Anda memerlukan penyimpanan K / V (mis. Konsul) yang memungkinkan untuk berbagi status di berbagai mesin Docker pada setiap host. Setiap mesin Docker perlu dikonfigurasi dengan penyimpanan K / V itu dan Anda kemudian dapat menggunakan Swarm untuk menghubungkan host Anda.
Kemudian Anda membuat jaringan overlay baru seperti ini:
Container sekarang dapat dijalankan dengan nama jaringan sebagai parameter run:
Mereka juga dapat terhubung ke jaringan saat sudah berjalan:
Detail selengkapnya tersedia di dokumentasi .
sumber
Artikel berikut menjelaskan dengan baik bagaimana menghubungkan kontainer buruh pelabuhan pada banyak host: http://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/
sumber
Dimungkinkan untuk menjembatani beberapa subnet Docker bersama-sama menggunakan Open vSwitch atau Tinc. Saya telah menyiapkan Gists untuk menunjukkan bagaimana melakukannya:
Keuntungan yang saya lihat menggunakan solusi ini daripada
--link
opsi dan pola duta besar adalah saya merasa lebih transparan: tidak perlu memiliki kontainer tambahan dan yang lebih penting, tidak perlu mengekspos port pada host. Sebenarnya saya memikirkan--link
opsi untuk menjadi peretasan sementara sebelum Docker mendapatkan cerita yang lebih baik tentang pengaturan multi-host (atau multi-daemon).Catatan: Saya tahu ada jawaban lain yang menunjuk ke Inti pertama saya, tetapi saya tidak memiliki cukup karma untuk mengedit atau mengomentari jawaban itu.
sumber
Seperti disebutkan di atas, Weave jelas merupakan solusi yang layak untuk menghubungkan kontainer Docker di seluruh host. Berdasarkan pengalaman saya sendiri, cukup mudah untuk menyiapkannya. Sekarang juga memiliki layanan DNS yang dapat Anda atasi wadah dengan nama DNS-nya.
Di sisi lain, ada Flanel CoreOS dan Opencontrail Juniper untuk memasang kabel kontainer di seluruh host.
sumber
Sepertinya kawanan buruh pelabuhan
1.14
memungkinkan Anda untuk:Memasukkan nama host ke penampung, menggunakan
--hostname
tag, tetapi saya belum dapat membuatnya berfungsi, penampung tidak dapat melakukan ping satu sama lain dengan nama host yang ditetapkan.menugaskan layanan ke mesin menggunakan
--constraint 'node.hostname == <host>'
sumber