Ben docker network create -d overlay sharednet
Docker yerleşimi ağ oluşturma sırasında yarış durumu nasıl engellenir?
kullanın böylece düzgün bir TestScript.sh
bir ağ var olup olmadıklarını ve ağ oluşturmak değilse zorunda yapılandırılmış konsolos ve liman işçilerinin cini ile iki makine Hosta ve HostB var. Ve bu betik hem HostA hem de HostB'de kullanılabilir. Ayrıca her makinede sadece TestScript.sh
'u yalnızca A'da bulunan bir MasterScript.sh
var. MasterScript.sh
'u çalıştırdıktan sonra, şaşırtıcı bir sonuç görüyorum, aynı adı taşıyan iki ağ oluşturuldu! Bu tartışmalı bir docker daemon eşitleme sorunudur.
[HostA]# docker network ls
NETWORK ID NAME DRIVER
ad492bba9efa sharednet overlay
ba53d4e7b739 sharednet overlay
[HostB]# docker network ls
NETWORK ID NAME DRIVER
ad492bba9efa sharednet overlay
ba53d4e7b739 sharednet overlay
beklenen davranıştır ben Hosta üzerinde bir ağ testnw
oluştururken, daha sonra HostB ben Nedeniyle ben MasterScript.sh
değiştiremez bazı kısıtlamalar nedeniyle bu
[HostB]# docker network ls
68994f95cd67 testnw overlay
[HostB]# docker network create -d overlay testnw
Error response from daemon: network with name testnw already exists
gibi bir şey görmek gerektiğini, ama can TestScript.sh
değiştir. Yani soru şu, bu yarış koşulunu bu kısıtlama altında çözmem mümkün mü?
izlenmekte olduğu; Bu bir böcek gibi görünüyor. Neden tüm sunuculardaki ağları ilk sırada kontrol ediyorsunuz? Bir ana bilgisayarda yapmak için yeterli olmaz mıydı? – morxa
@morxa Her makinede, yerel docker kapsayıcılarını yöneten ve bunları uygun ağlara bağlayan 'TestScript.sh' kopyası var. Ağ orada değilse, komut dosyası sadece ağı oluşturacak ve ağa kapsayıcıyı ekleyecektir. 'TestScript.sh', doğada tamamen dağıtıldığından ve tasarım birbiriyle konuşulamadığından, HostA'daki TestScript.sh, HostB'deki TestScript.sh komutunu yayımlama komutunu verdiyse bilmiyor. Bu yüzden ağ oluşturma komutumu senkronize etmek için docker daemon güvenmek zorunda. – cookieisaac
Hangi docker versiyonunu kullanıyorsunuz? – morxa