2015-09-07 30 views
5

我對Docker非常新穎,如果有任何最佳實踐指南來更新在非常大的分佈式環境中的Docker容器中運行的軟件,我現在正試圖讓我的頭腦發熱。我已經在Docker中更新MySQL數據庫等方面發現了一些帖子,它爲任何存儲數據的軟件提供了一個很好的提示,但是如果你想更新其他部分或者你自己分發和使用的軟件包或服務通過docker-compose的幾個其他碼頭圖像?如何更新碼頭集裝箱內的軟件?

在這樣的環境中是否有真實生活經歷的人可以幫助我或其他新手理解Docker中的最佳實踐(如果有的話)。

感謝您的幫助!

回答

1

您從不更新正在運行的容器中的軟件。你從hub下拉一個新版本。如果我們假設您使用的是最新的標籤(這是一個糟糕的主意,總是固定您的版本),而且它是官方庫圖片之一,或者公開發布的使用自動構建的圖片,您將獲得最新版本的容器圖像,當你拉圖像。

這假設您也已將數據作爲主卷或使用數據容器模式分隔出容器。

容器應該被認爲是不可變的,如果你改變它的狀態它不再是圖像的真實版本。

+0

如果您有許多用docker-composer構建軟件的小容器,該怎麼辦?這些變化是不是沒有停機?在最好的情況下,我希望沒有停機時間 –

+0

如果您的'docker-compose.yml'中涉及構建調用的部分Dockerfile涉及下載和編譯源代碼或通過包管理器進行升級,則會觸發新映像。 Re:沒有停機時間 - 你可以發佈你的'docker-compose.yml',它可以幫助我改進我的答案。 – booyaa

+0

到目前爲止,這更像是一個理論問題,而不是我在實踐中做的事情。考慮一個更大的分佈式環境示例,而不是單個docker鏡像示例。通過包管理器升級你意味着你基本上通過ssh連接到映像並執行,例如'npm'?你會在正在運行的容器中執行所有這些操作嗎?或者你會使用不同的映像/容器版本,只是「神奇地」將新版本的運行切換出來? –