?
This document uses PHP Chinese website manual Release
從DockerEngine的1.10版本開始,我們完全改變了磁盤上圖像數(shù)據的尋址方式。以前,每個圖像和層都使用一個隨機分配的UUID。在1.10中,基于圖像和層數(shù)據的安全散列,我們使用ID實現(xiàn)了內容可尋址方法。
這種新方法為用戶提供了更多的安全性,提供了一種避免ID沖突的內置方式,并保證了在拉動、推送、加載或保存后的數(shù)據完整性。它還帶來了更好的層共享,允許許多圖像自由地共享它們的層,即使它們不是來自同一個構建。
通過其內容對圖像進行尋址,還可以讓我們更容易地檢測是否已經下載了一些內容。因為我們有分開的圖像和層,所以您不必為原始構建鏈中的每一個映像提取配置。我們也不需要為沒有修改文件系統(tǒng)的構建指令創(chuàng)建層。
內容可尋址性是新發(fā)行特性的基礎。圖像拉和推代碼已經被重新加工,使用下載/上傳管理器的概念,這使得推拉圖像更加穩(wěn)定,并減輕了任何并行請求問題。下載管理器還會對失敗的下載進行重試,并為并發(fā)下載提供更好的優(yōu)先級。
我們還引入了一種新的清單格式,它構建在內容可尋址基礎之上。它直接引用內容可尋址圖像配置和層校驗和。新的清單格式還使清單列表能夠用于針對多個體系結構/平臺。移動到新的清單格式將是完全透明的。
為了使新模型能夠訪問當前映像,我們必須將它們遷移到內容可尋址存儲。這意味著計算當前數(shù)據的安全校驗和。
當您第一次啟動DockerEngine 1.10時,所有當前的圖像、標簽和容器都會自動遷移到新的基礎上。在加載容器之前,守護進程將計算當前數(shù)據所需的所有校驗和,完成后,所有圖像和標記都將具有全新的安全ID。
雖然這是一個簡單的操作,但是如果您有大量的圖像數(shù)據,計算SHA 256校驗和文件可能需要時間。平均而言,您應該假設Migrator可以以100 MB/s的速度處理數(shù)據。在此期間,您的Docker守護進程將無法響應請求。
如果您可以接受這一次hit,那么升級Docker引擎并重新啟動守護進程將透明地遷移您的映像。但是,如果希望最小化守護進程的停機時間,則可以在舊守護進程仍在運行時運行遷移實用程序。
這個工具將找到所有當前圖像并計算它們的校驗和。升級并重新啟動守護進程之后,遷移圖像的校驗和數(shù)據將已經存在,從而使守護進程從該計算工作中解脫出來。如果在遷移和升級之間出現(xiàn)了新的圖像,這些圖像將在升級到1.10時處理。
您可以在這里下載遷移工具。
遷移工具也可以作為Docker映像運行。在運行Migrator映像時,需要向容器公開Docker數(shù)據目錄。如果使用默認路徑,則會運行:
$ docker run --rm -v /var/lib/docker:/var/lib/docker docker/v1.10-migrator
如果使用devicemapper存儲驅動程序,還需要傳遞標志。--privileged
若要使工具訪問存儲設備,請執(zhí)行以下操作。