Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker-重建并将更新后的图像推送到Docker云的正确方法是什么?_Docker_Dockerfile_Docker Image_Docker Cloud - Fatal编程技术网

Docker-重建并将更新后的图像推送到Docker云的正确方法是什么?

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

我目前正在做的事情:

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

执行这些步骤后,存储库映像仍然没有更新。我一直收到这样的信息——“层已经存在”


我做错了什么?

多亏了@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>