我目前在管道中使用Docker羣集模式,並且我大量使用docker stack deploy -c compose-file.yml name-of-the-stack
作爲使用最新碼頭映像更新堆棧的命令。它完美的工作,除非我不從yaml文件中刪除服務。在這種情況下,stack deploy
命令應該在更新另一個服務的圖像時除去不再存在的服務,但行爲是它使容器運行並且這不是預期的行爲。 因爲這個我改變它與docker stack rm name-of-the-service
然後docker stack deploy -c compose-file.yml name-of-stack
。但是這有另一個可怕的副作用,隨機影響容器:docker stack rm name-of-the-stack
命令往往使nginx容器proxypass的可靠性完全不可靠(似乎與此問題相關https://github.com/docker/docker/issues/24244)。 事實上,nginx容器(即在另一個堆棧中,但在同一覆蓋網絡中)負責處理容器之間的所有請求,並使用Docker羣組模式的路由網格功能在它們之間建立代理通道,在部署堆棧的重新創建之後,無法代理請求,就好像它試圖將流量轉發到沒有更多存在的容器一樣,這會導致集成和行爲測試失敗。 有沒有一種方法可以不使用docker stack rm(目前看起來很麻煩)而是應用yml撰寫文件的最新狀態?碼頭堆棧部署不會刪除當前yaml撰寫文件中未聲明的服務
2
A
回答
3
您需要在您的docker stack deploy
命令--prune
選項:
$ docker stack deploy --help
Usage: docker stack deploy [OPTIONS] STACK
Deploy a new stack or update an existing stack
Aliases:
deploy, up
Options:
--bundle-file string Path to a Distributed Application Bundle file
-c, --compose-file string Path to a Compose file
--help Print usage
--prune Prune services that are no longer referenced
--with-registry-auth Send registry authentication details to Swarm agents
相關問題
- 1. 碼頭服務更新與碼頭堆棧部署與現有堆棧
- 2. 碼頭部署與碼頭堆棧部署
- 3. 附加的碼頭堆棧部署
- 4. 碼頭堆棧部署本地圖像
- 5. 鏈接運行外部碼頭到碼頭服務器撰寫服務
- 6. Bluemix部署行爲 - 聲明的服務
- 7. 碼頭堆棧羣 - 服務副本沒有傳播到Mutli服務堆棧
- 8. 刪除以前的文件部署
- 9. 「起始容器失敗:su ...」在碼頭堆棧部署中
- 10. Intent.FLAG_ACTIVITY_CLEAR_TOP不會刪除活動堆棧
- 11. 刪除堆棧中的頂部片段
- 12. 如何刪除YAML文件頂部的「---」?
- 13. 使用客戶端API進行碼頭堆棧部署
- 14. 有關堆棧段聲明
- 15. 未能與碼頭工人堆棧
- 16. 頭文件中的聲明
- 17. 如何刪除不在C#中堆棧頂部的堆棧項目
- 18. WiX - 不刪除已部署的文件
- 19. 從導航堆棧中刪除當前頁面和WebBrowserTask
- 20. 遠程應用服務的聲明會從package.appxmanifest刪除APPX
- 21. 在聲明式服務中。當服務被停用時,何時刪除引用?
- 22. 從流類型中刪除頭聲明
- 23. 如何刪除服務堆棧中的*響應約定?
- 24. 碼頭運行--net =「主機」相當於碼頭 - 撰寫
- 25. Git的部署:在刪除文件時,按文件中刪除
- 26. 如何從Acrtivities中清除背堆棧(當前任務)
- 27. MEAN堆棧刪除
- 28. 將參數寫入(聲明)頭文件
- 29. 全局聲明是堆棧還是堆?
- 30. 頭文件包含/前向聲明