Docker - What is proper way to rebuild and push updated image to docker cloud?

痞子三分冷 提交于 2019-11-29 16:49:55

问题


What I'm currently doing:

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

Build command:

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

Tagging:

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

Pushing:

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

After following these steps, the repository image still hasn't updated. I keep getting this message - "Layer already exists".

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

What am I doing wrong?


回答1:


I found the problem, thanks to @lorenzvth7!

I've had two images with same tag (which i was pushing to cloud).

Solution is:

  1. Inspect your images and find two or more with the same tag:

    docker images 
    
  2. Delete them:

    docker rmi --force 'image id'
    
  3. Thats it! Follow steps from my question above.



回答2:


Another solution, albeit bruteforce, is to rebuild with the --no-cache flag before pushing again.

docker rmi --force my-djnago-app:latest

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

docker push my-djnago-app:latest


来源:https://stackoverflow.com/questions/36714384/docker-what-is-proper-way-to-rebuild-and-push-updated-image-to-docker-cloud

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!