2016-04-11 21 views
0

Docker sürüntü kümemi bir sanal alanda yapıyorum. Bir makinede keşif yapmak için 1 zookeeper var, 1 oyun kurucusu ve 2 swarm nodu. Onları bağlamaya çalışıyorum ama dolandırıcı master'ımda docker run komutlarını çalıştırmaya çalıştığımda, işi düğümlere dağıtmıyor. Ayrıca, karıcı ana üzerinde docker info yaptığımda düğümlerin bağlı olmadığını görebiliyorum. Neyi yanlış yaptığımı bilmiyorum. Benim zoo.cfg boş bir pwd/veri klasör ve bir pwd/config klasörü varDüğümleri docker sürgüsü master'ına (zookeeper kullanarak) bağlayamıyor

: İşte benim sorunu yeniden oluşturmaya adım -

#---- CREATE ZOO --- 

docker-machine create --driver virtualbox zoo1 
docker-machine start zoo1 
eval $(docker-machine env zoo1) 

docker pull jplock/zookeeper 

docker run -p 2181:2181 -v `pwd`/conf:/opt/zookeeper/conf -v `pwd`/data:/tmp/zookeeper jplock/zookeeper 

docker-machine ip zoo1 #############192.168.99.100 

tickTime=2000 
dataDir=/tmp/zookeeper 
clientPort=2181 
initLimit=5 

-

( )
eval "$(docker-machine env machine-smaster)" 
docker run -p 2375:2375 -d -t swarm manage -H 0.0.0.0:2375 --advertise $(docker-machine ip machine-smaster):2375 zk://192.168.99.100:2181/swarm 
docker run swarm list zk://192.168.99.100:2181/swarm 

sleep 10 

eval "$(docker-machine env machine-s01)" 
docker run -d swarm join --advertise $(docker-machine ip machine-s01):2375 zk://192.168.99.100:2181/swarm 
docker run swarm list zk://192.168.99.100:2181/swarm 

eval "$(docker-machine env machine-s02)" 
docker run -d swarm join --advertise $(docker-machine ip machine-s02):2375 zk://192.168.99.100:2181/swarm 
docker run swarm list zk://192.168.99.100:2181/swarm 

bazı kaplar çalıştırmak:

eval "$(docker-machine env machine-smaster)" 
docker run hello-world 

çalışma (o ana tarafından çalıştırılan) düğümlerine gönderilmez. Ben liman işçisi bilgi çalıştırırsanız:

eval "$(docker-machine env machine-smaster)" 
docker info 

Ben sürüsü düğümleri görmüyorum.

+0

Sanırım * swarm * API için * docker * API'sine bağlanıyorsunuz; deneyin "eval" $ (docker-makine env --swarm makine-ustası) "' – thaJeztah

cevap

0

sen reklamını yaptığınız adresleri yöneticisi örneğinden aslında ulaşılabilir olduğunu doğrulamak Can: docker-machine env çalıştırırken senin durumunda böyle

Sürü API bağlanmak için, --swarm seçeneği eklemek ? Yani docker -H $(docker-machine ip machine-s01):2375 info geçerli bir sonuç döndürüyor mu?

(bu altkabuk sadece orijinal istemci üzerinde, yönetici VM içinde çalışmaz unutmayın.)

Belki senin sorunun başladı Docker Makine örnekleri TLS ile :2376 dinleyen ama senin edilir ki başlatıldı Swarm konteynerleri, numaralı :2375 numaralı telefona reklam vermeye ve TLS ayarları belirtilmeksizin bağlanmaya çalışıyor mu?

Swarm kapsayıcıları için docker logs nedir?

+0

'docker -H $ (docker-makine ip-makine-s01): 2375 '' makine-ustasından bilgi verir: Docker arka planına bağlanılamıyor. Docker sunucusu bu sunucuda mı çalışıyor? "docker logs": time = "2016-04-12T20: 57: 50Z" level = fatal msg = "Bir kümeyi yönetmek için keşif gerekiyor. 'Swarm manage --help' bölümüne bakın." Swarm yönetimindeki tüm tls seçeneklerini kaldırdım ve 'docker logs'' denedim. INFO [0000] TLS INFO olmadan keşif başlatılıyor [0000] HTTP addr = 0.0.0.0: 2375 proto = tcp' dinleniyor ancak ilk komut hala geçersiz – rolele

+0

Sorunumu kolayca yeniden üretmek için bir githup repo kurdum: https://github.com/casertap/playing-with-docker-swarm – rolele

+0

@pierolele, bu tam olarak benim amacım. Swarm kapsayıcılarını reklamını yaptığınız Docker ana bilgisayarına/bağlantı noktasına bağlanamazsınız, dolayısıyla başarısız olur. : 2376 adresinin reklamını yapmalı ve sertifikaların '-v' kullanılarak doğru şekilde yönetici kabına bağlanmasını sağlayın. – nathanleclaire

0

Eğer Docker API değil Sürü API üzerinden "Sürü usta" makineye bağlanırken gibiler. Bu nedenle, Docker her zaman bağlandığınız ana makineye kapsayıcılar dağıtır ve Swarm'ın doğru ana bilgisayardaki kapsayıcıları zamanlamasını kullanmaz.

eval "$(docker-machine env --swarm machine-smaster)" 
+0

- Çalıştığım her şeye sahip olduğum işte --swarm: "$ eval" $ (docker-machine env --swarm machine-smaster) " TLS bağlantısını kontrol ederken hata oluştu: Swarm bağlantısı kontrol edilemiyor, ancak sertifikalar geçerli. Belki sürüsü başlamıyor '$ eval" $ (docker-makine env makine-yönetici) "' $ docker ps' f5bb895cdad9 sürüsü "/ swarm manage -H 0.0" 51 saniye önce Up 48 seconds 0.0.0.0: 2375-> 2375/tcp tiny_kowalevski – rolele

+0

Swarm ustasının TLS olmadan başlatıldığını ve docker-makinesinin TLS ile iletişim kurmaya çalıştığını düşünüyorum. Ayrıca bkz. Https://docs.docker.com/swarm/install-w-machine/ – thaJeztah

+0

Bunun yerine "docker run -p 2375: 2375 -d -t swarm manage -H 0.0.0.0:2375 --advertise $ (docker-makine ip makine-smaster): 2375 zk: //192.168.99.100: 2181/swarm 'TLS ile ilgili tüm seçenekleri ekledim: ' docker run -p 2375: 2375 -d -t -v/var/lib/boot2docker:/certs: ro swarm'ı yönetmek --tlsverify --tlscacert =/certs/ca.pem --tlscert =/certs/server.pem --tlskey =/certs/server-key.pem -H 0.0.0.0:2375 --advertise $ (docker-makine ip makinesi-smaster): 2375 zk: //192.168.99.101: 2181/swarm ' – rolele