Docker-重建并将更新后的图像推送到Docker云的正确方法是什么?
我目前正在做的事情: Dockerfile:Docker-重建并将更新后的图像推送到Docker云的正确方法是什么?,docker,dockerfile,docker-image,docker-cloud,Docker,Dockerfile,Docker Image,Docker Cloud,我目前正在做的事情: 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
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
执行这些步骤后,存储库映像仍然没有更新。我一直收到这样的信息——“层已经存在”
我做错了什么?多亏了@lorenzvth7,我找到了问题所在 我有两张带有相同标签的图片(我正在推到云端) 解决办法是:
docker images
docker rmi --force 'image id'
另一个解决方案,尽管是bruteforce,是在再次按下之前使用--no cache标志进行重建
docker rmi --force my-djnago-app:latest
docker build -t my-djnago-app:latest . --no-cache
docker push my-djnago-app:latest
我也遇到了这个问题(在我的web应用程序中
),如下所示:
#当我将我的客户推到回购时
$docker推送
推送是指存储库[docker.io/xx/getting started]
fd5aa641b308:层已存在
d9c60c6f98e8:层已存在
d9d14867f6d7:层已存在
64ce166099ca:层已存在
73b670e35c69:层已存在
5f70bf18a086:层已存在
9ea142d097a5:层已存在
52f5845b1de0:层已存在
我尝试了我的解决方案,它是有效的
# force remove image
$ docker rmi --force <image-id>
# tag for image
$ docker tag <image-name> <your-dockerHub-username>/<image-name>
# push image, just done!
$ docker push <your-user-name>/<image-name>
#强制删除图像
$docker rmi——武力
#图像标签
$docker标签/
#推图像,刚刚完成!
$docker推送/
终端输出:
#当我将容器推到回购时
$docker推送
推送是指存储库[docker.io/xx/getting started]
#它会推动你的部分改变
fd5aa641b308:已按下
d9c60c6f98e8:按下
d9d14867f6d7:层已存在
64ce166099ca:层已存在
73b670e35c69:层已存在
5f70bf18a086:层已存在
9ea142d097a5:层已存在
52f5845b1de0:层已存在
然后,打开我的web应用程序,它将更新最新版本 您是否更改了dockerfile中的某些内容?否则docker构建将重建相同的映像(这将非常快,因为所有东西都存在)。当您推送同一图像时,repo将检测到所有必要的层都已存在,并将更改任何内容。@lorenzvth7 Dockerfile没有更改。我已更改使用
ADD导入的应用程序代码/www/
更改www/文件夹中的代码后,是否重新生成图像?因为那是必要的。之后,你必须标记新图像并推送。@lorenzvth7是的,我推。。嗯,奇怪的是,在执行docker构建(使用新的源代码)之后,“my djnago app:latest”图像有多旧?对于经常做的事情来说,这似乎真的很难处理。我觉得我们错过了什么。当这种情况发生时,我只是重新标记我的图像并按下按钮。有时标签不起作用?奇怪,你好,李丹。最好以文本模式复制日志。这有助于索引和搜索,具有相同问题的用户可以更快地到达这里。坦克
# force remove image
$ docker rmi --force <image-id>
# tag for image
$ docker tag <image-name> <your-dockerHub-username>/<image-name>
# push image, just done!
$ docker push <your-user-name>/<image-name>