2016-04-19 37 views
7

啥子我現在做的:碼頭工人 - 重建並將更新的圖像推送到碼頭雲的正確方法是什麼?

Dockerfile:

FROM python:3.5.1 

ENV PYTHONUNBUFFERED 1 

RUN mkdir /www 
WORKDIR /www 
ADD deps.txt /www/ 
RUN pip3 install -r deps.txt 
ADD . /www/ 
RUN chmod 0755 /www/docker-init.sh 

生成命令:

docker build -t my-djnago-app:latest . 

標記:

docker tag my-djnago-app:latest lolorama/my-djnago-app-img:latest 

推:

docker push lolorama/my-djnago-app-img:latest 

經過這些步驟之後,存儲庫映像尚未更新。我總是得到「圖層已經存在」的信息。

The push refers to a repository [docker.io/lolorama/my-django-app-img] 
fd5aa641b308: Layer already exists 
d9c60c6f98e8: Layer already exists 
d9d14867f6d7: Layer already exists 
64ce166099ca: Layer already exists 
73b670e35c69: Layer already exists 
5f70bf18a086: Layer already exists 
9ea142d097a5: Layer already exists 
52f5845b1de0: Layer already exists 
e7fadb3ab9d4: Layer already exists 
cef72744de05: Layer already exists 
591569fa6c34: Layer already exists 
998608e2fcd4: Layer already exists 
c12ecfd4861d: Layer already exists 

我在做什麼錯了?

+0

你是否在你的dockerfile中改變了一些東西?否則,碼頭構建將重建相同的圖像(由於一切都存在,這將會非常快)。當你推送相同的圖像時,回購會檢測到所有必要的圖層已經存在,並會改變任何東西。 – lvthillo

+0

@ lorenzvth7 Dockerfile沒有改變。我更改了使用「ADD」導入的應用程序代碼。/www /' –

+0

更改了更改www /文件夾中的代碼後,您是否重建了圖像?因爲這是必要的。之後,你必須標記新圖像並推送。 – lvthillo

回答

4

我發現了這個問題,感謝@ lorenzvth7!

我已經有兩個圖像具有相同的標記(我推着雲)。

解決辦法是:

  1. 檢查您的圖片,並找到兩個或兩個以上具有相同的標籤:

    docker images 
    
  2. 刪除:

    docker rmi --force 'image id' 
    
  3. 完蛋了!按照上面我的問題的步驟。
+3

對於經常進行的操作,這看起來確實很沉重。我覺得我們錯過了一些東西。 – sudo

相關問題