微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决更新docker映像的正确方法是什么

我创建了一个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
  • 并通过:
  • 将其推送到私人仓库
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-correctiontawfik741/opencascade-build:amd64图片的大小相同。

解决方法

创建图像后,您将无法编辑,修改或更新图像。

您可以基于现有图像创建新图像。 Docker在内部工作的方式中,新映像始终包含整个旧映像,以及对旧映像所做更改的描述。这样做永远不会使新图像变小,只会变大。

您需要重新创建并从原始基础图像开始创建新图像。如果您使用标准的docker build命令和Dockerfile系统,则只需删除将大文件添加到映像并重新构建的COPY行即可。如果您使用的是docker commit,则需要重新开始,并希望以相同的方式重复相同的手动命令。即使您尝试“快速迭代”,转而使用Dockerfile也会更好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。