關於docker build時間過久及add不能跨檔案的問題
我們使用自動程式buildimage映象,其中過程中發現很多詭異的問題, 有很多尚在解決中, 但是同時buildimage, 高頻度的連續buildimage依然有部穩定的情況,特別在超過5G以上的映象時,發生的概率極高.
我們先說兩個問題:
1. docker build 時間過久,其中絕大部分時間在Sending build context to Docker daemon(dockerfile的編寫優化方案,網上很多此處不贅述)
2. dockerfile add時,不能使用本級目錄以外的其他目錄及檔案.
以上兩個問題都是因為一個設計問題影響所致.
根檔案
|
|- Dockerfile
|
|- 資料夾1
|- 資料夾2
docker build upload時間過久是因為啟動時載入本層級目錄所有的檔案, 如上述載入根檔案的所有檔案,包括資料夾1,資料夾2, 如果本級目錄檔案較多,則載入時間是非常慢,因此build dockerfile時應在一個葉子資料夾中執行build.
相關client原始碼:
// opts.ContextDir 是 build的資料夾
if opts.ContextDir != "" {
if opts.InputStream != nil {
return ErrMultipleContexts
}
var err error
// 載入本級目錄,也是影響時間核心問題
if opts.InputStream, err = createTarStream(opts.ContextDir, opts.Dockerfile); err != nil {
return err
}
}
由於流載入是包括本級目錄的,故此upload的時間會過長.
docker add時使用也是由此處載入有關, 程式會將本地資料夾拷貝到/var/lib/docker/tmp中,從而在tmp中向容器內部拷貝,故此他時沒有辦法跨目錄的.
tmp
|
|- Dockerfile
|
|- 資料夾1
|- 資料夾2
相關文章
- 關於移動臨時表空間檔案位置的問題
- 關於CCSprite不能及時顯示的問題
- 關於iis伺服器不能下載.cfg檔案的問題伺服器
- 關於跨域的問題跨域
- 關於跨域問題跨域
- 解決Docker容器時區及時間不同步的問題Docker
- 關於Cookie跨域的問題Cookie跨域
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- 關於時間轉換 SimpleDateFormat 的使用的問題ORM
- 關於django跨域問題Django跨域
- 關於SAX解析xml檔案的問題XML
- 關於解壓zip檔案的問題
- 關於 session 未到設定的過期時間就過期的問題(分享坑點)Session
- 關於修改程式碼後不能及時生效的問題
- Git不能add含有漢字檔案Git
- 關於 App 啟動時間測試的問題APP
- 關於solairs10的檔案描述符問題及設定AI
- 解決關於Mac不能複製複製檔案到隨身碟的問題Mac
- 關於oracle檔案許可權的問題Oracle
- 關於檔案上傳的問題smartUpload
- 有關時間同步的問題
- 關於Android檔案數過大,分包問題的解決辦法Android
- 關於 maatwebsite/excel 匯出不能識別中文檔名稱的問題WebExcel
- 關於配置檔案中的預設值的問題
- 關於QT的標頭檔案相互包含的問題QT
- 關於過濾字元的問題字元
- 關於檔案上傳下載的編碼問題
- 關於FileDownloader檔案長度校驗的問題
- 關於 Xcode 9 拖入檔案未生效的問題XCode
- 請教高手關於解析xml檔案的問題 急~~XML
- 解決vs2010下不能建立專案及檔案的問題
- 過濾器解決檔案上傳下載跨域問題過濾器跨域
- 耽誤大家電時間 詢問關於struts 中使用Cookie的問題Cookie
- 有關*.properties檔案的問題
- 關於Vue修改預設的build檔案存放的dist路徑VueUI
- 跨國檔案傳輸軟體有哪些?跨國檔案傳輸遇到的問題
- 使用主題檔案(包含CSS檔案)時遇到的問題CSS
- 關於日期及時間欄位的查詢