2016-03-30 17 views
2

我正在使用Docker進行部署,因此我使用Docker-Compose(.yml文件)同時啓動〜6個容器。撰寫文件中的每個圖像都在本地找到(部署環境中沒有互聯網連接)。Docker可以自動重新啓動容器並使用新的圖像標籤提交更改?

因爲它的立場是我的部署採取如下步驟:最新,圖像2:最新的,使用等與圖像從本地圖像,例如圖像1

  1. 潤泊塢窗,構成了(發射6個容器「最新」標籤)
  2. 退出/停止時,我有6個停止的容器。手動重啓六個已停止的容器中的每一個(docker start xxx)
  3. 手動提交每個重新啓動的容器(docker commit xxx)
  4. 手動重新標記每個上一代圖像(image1:latest - > image1:版本1,圖像1:版本2等)並手動刪除包含「最新」標籤的圖像
  5. 用「最新」標籤(圖像1:最新)手動標記每個提交容器(圖像爲最新)

這個過程是相當用戶參與的,我們的部署需要用戶參與才能運行「docker-compose up」命令,然後關閉d擁有/停止Docker-Compose。

所需的最終目標是讓腳本或Docker自行完成這些步驟,並最終生成不同代的圖像(image1:version1,image1:version2,image1:latest等)。

所以,我的問題是,我怎麼會去創建一個腳本(或有碼頭工人做)在腳本(或碼頭)可以自主:

  • 重新啓動停止容器在停止/退出的泊塢窗,撰寫
  • 提交的重新啓動容器
  • 重新標記以前的圖片與最新的標籤遞增版本#(圖像1:VERSION1,圖像1:版本2等),然後刪除以前的圖像1:最新的圖像
  • 標記新提交的重新啓動的容器(例如, h現在是圖像)與「最新」標籤

這是一個相當長和密集的問題要回答,但我將不勝感激任何幫助完成我的任務所需的任何步驟。謝謝。

+0

你的第4步和第5步有點混亂。在我閱讀的時候,你會標記最新版本 - >增量版本,刪除最新標籤,然後將增量版本重新標記爲最新版本。爲什麼這樣? – Tommy

+0

在初次/第一次運行時,您有全部6張圖片(需要docker-compose才能啓動6個容器),並組合使用「latest」標籤抓取圖像。然後我們需要保存新一代的圖像,並給他們「最新」的標籤。上一代(最初的人羣)也不能擁有「最新」標籤,因此我必須用版本號重新標記它。 我們的目標是隨着時間的推移挽救新一代圖像,並讓最新一代包含「最新」圖像,以便在下次運行時抓住它們。 – OriolesMagic

回答

1

瞭望塔項目試圖解決這個問題。

https://github.com/CenturyLinkLabs/watchtower

它自動重新啓動時基本圖像被更新運行的容器。

它也是智能的,例如,當需要重新啓動鏈接到其他容器的容器時,它會這樣做而不會破壞鏈接。

我從來沒有嘗試過,但值得一試!

讓我們知道它是如何發展的。我會喜歡這個問題,因爲這聽起來很棒。

PS如果箭樓證明了一個痛苦而你嘗試這樣做手工然後...

docker inspect 

是你的朋友,因爲它可以讓你對容器和圖像信息的負荷。允許您確定當前狀態。

相關問題