我對我看到的一些docker緩存行爲感到困惑。Docker緩存混淆
首先我做一個碼頭構建,然後將鏡像推送到一個存儲庫,然後我在本地刪除所有我的碼頭數據(我在OSX上的一個虛擬機上運行docker,因此我銷燬並重新創建VM) 。然後我拉出剛推入存儲庫的圖像。
現在,我對我的代碼做了任何改變,例如,在自述文件中添加一個換行符。當我運行docker構建時,沒有任何步驟被緩存。它從一開始就逐一運行所有步驟。
當然,我預計任何COPY .
步驟都會失效,因爲我更新了代碼,但是甚至之前的步驟都是無效的。
爲什麼會發生這種情況?
UPDATE:
這裏是我的輸出(匿名位)。
有沒有命令行參數,這種情況發生的時候我就跑docker build .
Step 1 : FROM 123456.dkr.ecr.us-east-1.amazonaws.com/foo:0.1.1 0.1.1: foo d89e1bee20d9: Already exists 9e0bc8a71bde: Already exists 27aa681c95e5: Already exists a3ed95caeb02: Already exists 1f23dc7f328b: Already exists 7c5e36b70451: Already exists 0844dd833da6: Already exists 8017b7feecce: Already exists 0dd824b407cc: Already exists ecfa07005844: Already exists 697248412260: Already exists df6663ccf76d: Already exists Digest: sha256:823221727843f32d1a52879aa57e40e02f4db2b31a2344384fc0307fa85c2b52 Status: Downloaded newer image for 123456.dkr.ecr.us-east-1.amazonaws.com/foo:0.1.1 ---> b6b907685beb Step 2 : RUN curl https://example.com > /file ---> Running in 1f912826e4c8 OK
它說,它「下載新的形象」爲「foo」的基本圖像,會是其中問題是?正如你所看到的那樣,所有的圖層都已經存在了。所以奇怪的是,它認爲它已經下載了一個更新的圖像,也許這與下面的步驟沒有被緩存的原因有關?
您使用的是什麼版本的docker? – saada
@saada Docker 1.9.1,我使用的存儲庫是AWS ECR存儲庫,如果這有所幫助。 – danny
使用Docker重複您的實驗1.10 – saada