我們正在運行DC/OS集羣,並且現在手動管理它,因爲其中運行的容器實例數量少且不需要太多幹預。DC/OS和併發部署
現在,我們希望從Jenkins進行部署 - 而在Marathon插件的配合下,我們遇到了一個或多或少有趣的問題:共享卷。
我們所有的節點都有一個安裝在/ srv上的NetApp,而且這些服務有Docker容器卷,它們將某些容器路徑映射到/ srv中的子目錄。現在,當Jenkins作業導致服務重新部署時,它將在暫存新版本時離開舊容器並在新容器達到「健康」狀態時切換。
這是一個問題,因爲所涉及的映像包含MongoDB和MySQL--由於在後備數據庫文件上存在併發訪問,因此中斷映像。
如何將舊實例縮放到0,並且只有在舊實例乾淨停止時才實際部署新實例?
在DC/OS中設置共享的MongoDB/MySQL容器是我不太喜歡的,因爲它會導致開發者機器上的容器之間的差異,以及容器播種的數據庫內容是包括在圖像中...
編輯:當有人不小心按下「重新啓動服務」時,這個問題也經常咬我們,因爲不像命名提示,它不會執行shutdown-wait-redeploy,而且還會執行stage-then-切換...