2015-04-04 30 views
1

目前我們有Jenkins作業配置爲釋放我們的服務,其他人將其部署到測試,舞臺和產品。作爲發佈工作的一部分,我們創建了一個包含服務二進制文件(及其所有依賴項)的Docker鏡像,該鏡像被推送到我們的專用Docker存儲庫(使用新版本創建一個新標籤)。到目前爲止,這很好用,因爲可以很容易地將Jenkins的這個(或更早版本)版本部署到我們不同的環境中,或者只需要拉取特定版本的服務並在本地運行。我的問題是,如果我們轉向持續交付,這種方法是否行得通?我們的想法是,在每次成功構建之後,我們創建一個新的Docker標記並推送到我們的私人回購站,並將圖像部署到測試環境。我擔心的是,如果每天都要做好幾次,那麼會有很多Docker標籤/圖層需要下載。恐怕隨着時間的推移,需要很長時間才能拉出圖像(也許還有其他我不知道的問題)?爲持續交付創建大量Docker標記是否存在任何問題?

所以要改寫這個問題更清楚:

  1. 它是罰款創造了很多泊塢標籤或者是這個東西, 應避免?
  2. 最好是有一個基礎鏡像(操作系統等),然後從源代碼管理系統中的標籤構建服務二進制文件,然後構建一個映像,然後在部署時將其傳輸到不同的環境中?
  3. 其他建議?

回答

3
  1. 公共註冊表可以很好地處理多個標記。想想定期發佈的1000張圖像。 Docker客戶端和註冊表之間不需要標記同步,只需確保您的註冊表足夠強大即可應對。作爲測試過程的一部分,我假設你拉下特定的圖像和標籤?
  2. 基本圖像總是優於每次新建的版本。它也會加快你的構建時間。
2

Docker Registry v1(python)在縮放標籤上很糟糕。如果您使用的是分佈式文件系統存儲後端(如GCS或S3),則會特意咬你。關於上下文,請參閱https://github.com/docker/docker-registry/issues/614

現在,新協議(v2)和(golang)註冊表應該會更好。

底線:

  • 沒有什麼錯你的描述,除了v1協議/註冊表本身的辦法...
  • 你應該泊塢窗1.6打賭(候選發佈版都出來了),和v2 golang註冊表(這裏是:https://github.com/docker/distribution