2014-04-25 7 views
6

So che questa è una domanda un po 'lunga, ma qualsiasi aiuto sarebbe apprezzato.Orchestra Docker

La versione breve è semplicemente che voglio disporre di un set di contenitori che comunicano tra loro su più host e che sono accessibili con SSH. So che ci sono strumenti per questo, ma non ero in grado di farlo.

La versione lunga è:

C'è un software che ha più componenti e questi componenti possono essere installati in qualsiasi numero di macchine. C'è un client e un lato server per questo software. Sia il client-server che i componenti lato server comunicano tramite porte UDP. Il server utilizza CentOS, il client utilizza Microsoft Windows.

Desidero creare un ambiente di test costituito da 4 contenitori e questi componenti verranno distribuiti su questi contenitori e su una macchina lato client. La macchina host docker è Ubuntu, i contenitori sono CentOS. Se installo tutti i componenti in un contenitore funziona, se ce ne sono più di quanti non lo sono. Secondo i registri funziona, ma non è così.

Ho letto che è necessario collegare i contenitori o utilizzare un orchestratore come Maestro per fare questo, ma non ero in grado di farlo finora.

Quello che voglio è essere in grado di avviare un set se contenitori che comunicano tra loro, su uno o più host. Voglio poter accedere a questi contenitori con ssh, quindi il servizio dovrebbe avviarsi automaticamente.

Inoltre sarebbe bello usare ddns per i contenitori perché i nomi verrebbero usati ancora e ancora ma gli indirizzi IP possono cambiare, ma questa è solo la ciliegina sulla parte superiore.

Alcune specifiche:

Il padrone di casa è una nuova installazione di Ubuntu 12.04.4 LTS x86_64 Docker è la versione più recente. (lxc-docker 0.10.0) Ho usato il driver nativo. I container un semplice centos semplice estratto dall'indice di docker. Ho installato alcune cose di base sui contenitori: openssh-server, mc, java-jre. Ho cambiato la rete mobile in una rete che può essere raggiunta dalla rete interna. Le regole delle tabelle IP sono state cancellate, perché non avevo bisogno di loro, ma ho provato anche con quelle in atto ma senza fortuna. I cambiamenti /etc/default/docker file:

DOCKER_OPTS="--iptables=false" 

o con l'API esposta:

DOCKER_OPTS="-H tcp://0.0.0.0:4243 --iptables=false" 

Le porte che utilizza software sono tra 6000-9000 ma hanno cercato di aprire tutte le porte. Un esempio di comando di marcia:

docker run -h <hostname> -i -t --privileged --expose 1-65535/udp <image> /bin/bash 

Ho provato anche con API a vista:

docker -H :4243 run -h <hostname> -i -t --privileged --expose 1-65535/udp <image> /bin/bash 

io non mi arrendo, ma sarei grato po 'di aiuto.

+0

Eventuali duplicati di [Come scalare contenitori Docker produzione] (http://stackoverflow.com/questions/18285212/how-to-scale-docker -containers-in-production) –

+2

non lo chiamerebbe un duplicato, ma potrebbe esserci anche la risposta alla mia domanda. grazie comunque :) – hekm01

+0

strumenti di revisione come: https://github.com/docker/libswarm proposto di recente da http://blog.docker.com/2014/07/continued-community-momentum-around-orchestration/ – kikicarbonell

risposta

2

Si potrebbe voler dare un'occhiata al progetto in fase di sviluppo docker swarm. Ti consentirà di trattare il tuo set di macchine di prova come un cluster a cui è possibile distribuire container.

0

È fig è possibile utilizzare semplicemente l'orchestrazione e collegare i contenitori insieme invece di eseguire tutto ciò che utilizza ddns e port forwarding. La sintassi di fig.yml è piuttosto diretta.