gpt4 book ai didi

docker - 更新 docker 镜像的正确方法是什么

转载 作者:行者123 更新时间:2023-12-02 19:16:08 24 4
gpt4 key购买 nike

我创建了一个 ubuntu docker 容器,复制了一个我将在其上使用的 c++ 库(大小为 1.2 gb)的镜像(在 docker 容器的主目录上),在其上构建它并忘记在创建图像之前删除镜像和推送到 docker hub。
然后我尝试从图像中重新运行容器以删除 c++ 镜像,以便我可以提交新图像,但是由于我忽略的原因,新图像没有缩小。在我运行 docker images 之后我还有 :

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tawfik741/opencascade-build amd64 74f333aa7293 16 minutes ago 1.79GB
我运行的命令是:
  • 创建容器:
  • docker run --name opencascade-build -it ubuntu:latest bash
  • 复制 C++ 库镜像,以便在容器上构建它:
  • docker cp opencascade-dev-mirror [my-container-id]:/home
  • 建立我的图书馆后,我做了:
  • sudo docker commit --author "Tawfik" --message "opencascade-build" [my-container-id] tawfik741/opencascade-build:amd64
  • 并将其推送到私有(private)仓库:
  • docker push tawfik741/opencascade-build:amd64 
    在发现我忘了删除 opencascade-dev-mirror我决定从容器中运行容器,将其删除并保存新图像,我尝试保存新图像,但它与旧图像的大小完全相同:
  • 我从图像中运行了 docker 容器:
  • docker run -it tawfik741/opencascade-build:amd64 /bin/bash
  • 我更新了容器然后运行:
  • docker commit --author "Onboard SARL" --message "opencascade-build" [my-container's id] tawfik741/opencascade-build:correction-amd64-correction
    但是 tawfik741/opencascade-build:amd64-correction大小与 tawfik741/opencascade-build:amd64 相同图片 。

    最佳答案

    创建图像后,您将无法对其进行编辑、修改或更新。
    您可以基于现有图像创建新图像。 Docker 内部的工作方式,新镜像总是包含整个旧镜像,加上旧镜像变化的描述。这样做永远不会使新图像变小,只会变大。
    您需要重新开始并从原始基础镜像开始创建一个新镜像。如果您使用标准 docker build命令和Dockerfile系统,删除COPY就足够了将大文件添加到图像并重建的行。如果您使用 docker commit ,您需要完全重新开始,并希望您以相同的方式重复相同的手动命令;即使您尝试“快速迭代”,切换到 Dockerfile 也会好得多。

    关于docker - 更新 docker 镜像的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63389984/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com