也許我錯過了一些東西,但是我做了一個本地Docker鏡像。我有一個3節點的羣集,並正在運行。兩名工人和一名經理。我使用標籤作爲約束。當我通過約束向其中一名工作人員啓動一項服務時,如果該圖像是公開的,它就可以很好地工作。Docker:Swarm Worker節點沒有找到本地構建的鏡像
也就是說,如果我做的:
docker service create --name redis --network my-network --constraint node.labels.myconstraint==true redis:3.0.7-alpine
然後Redis的服務發送給工作節點之一,是功能齊全。同樣,如果我在沒有約束的情況下運行本地構建的映像,由於我的經理也是一名工作人員,因此它將被安排到經理並運行得非常好。然而,當我添加它的工作節點上失敗的約束,從docker service ps 2l30ib72y65h
我看到:
... Shutdown Rejected 14 seconds ago "No such image: my-customized-image"
有沒有一種方法,使工作人員可以訪問本地圖像羣的管理節點上?它是否使用可能未打開的特定端口?如果不是,我該怎麼做 - 運行一個本地存儲庫?
甜 - 謝謝!在我接受作爲答案之前,(我不喜歡不一致!),管理器節點是否看到本地映像(不是來自docker run,而是來自docker service create)並且Worker節點不? – JoeG
從用戶的角度來看,也許。但從代碼角度來看,每個Docker主機都是獨立的環境。在構建時,您將在主機上創建該映像,而不是在羣集上。 「服務創建」的邏輯是首先使用主機上緩存的內容,然後回退到從註冊表中提取該映像。這恰好與'docker run'具有相同的行爲。 – BMitch
我可能會丟失一些東西,但羣中的工作節點如何引用此註冊表/映像?我試着在我的yml文件中放入localhost:5000/my/image,但我的工作節點仍然找不到圖像。有沒有辦法讓這個工作無需登錄到工作節點? –