2017-04-03 63 views
2

我有疑問在使用碼頭羣模式命令更新現有服務後部署了一套服務使用docker stack deploy。 據我瞭解,每一項服務都被固定在創建時圖像的SHA256摘要中,所以如果您重建並推送一個圖像(使用相同的標籤),並且您嘗試運行docker service update,則服務映像不會更新(甚至如果SHA256不同)。相反,如果您再次運行docker stack deploy,則會使用新映像更新所有服務。 我設法通過使用docker service update --image repository/image:tag <service>來更新服務映像。這是這些命令的正常行爲,還是有我不明白的地方?碼頭服務更新與碼頭堆棧部署與現有堆棧

我使用泊塢17.03.1-CE

回答

0

泊塢棧部署documentation說: 「創建和更新從撰寫或在羣民建聯文件堆棧這個命令來運行一個目標管理器節點「。 所以你描述的行爲是預期的。

碼頭服務更新documentation是不是很清楚,但你自己說,它只能與--image repository/image:tag <service>運行,所以國旗是必要的,以更新形象。

你有兩種方法來完成你想要的。

+0

我只想了解docker stack deploy更新現有服務是否正常,或者它是一個錯誤。 –

+0

該文檔指出堆棧部署是爲了創建和更新堆棧。所以這不是一個bug,它是一個功能:) – herm

+0

很明顯,我並不是在談論「docker stack deploy」更新堆棧的事實,而是它更新了圖像摘要的事實,與普通的「docker service update」相比, 。 –

0

docker stack deploy將現有服務的圖像更新爲指定標記鏈接的任何散列值是正常的和預期的行爲。

如果沒有標籤存在,假定latest - 這有時可能是有問題的,因爲latest標籤不能很好地被大多數人理解,並由此引發一些意想不到的結果。

+0

中的說明,您能指出一些文章以更好地理解最新的標籤或解釋它嗎?謝謝。 –

+1

Hi @MarcoBlos,你可以從這些開始:https://medium.com/@mccode/the-misunderstood-docker-tag-latest-af3babfd6375,http://container-solutions.com/docker-latest-confusion/ 。 – demaniak

+1

謝謝@demaniak。現在有更多關於這個問題的信息。 –