首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新码头形象的正确方法是什么?

更新码头形象的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-08-13 07:17:04
回答 1查看 397关注 0票数 1

我创建了一个ubuntu容器,复制了我将在其上使用的c++库镜像(大小为1.2GB)(在对接容器的主目录上),在此基础上构建了镜像,并在创建映像和推送到对接中心之前忘记移除镜像。

然后,我尝试从映像中重新运行容器,以删除c++镜像,这样我就可以提交新映像,但是由于忽略的原因,新映像没有缩小。在运行docker images之后,我仍然拥有:

代码语言:javascript
运行
复制
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
tawfik741/opencascade-build   amd64               74f333aa7293        16 minutes ago      1.79GB

我运行的命令是:

  • 使用:

创建容器

代码语言:javascript
运行
复制
docker run --name opencascade-build -it ubuntu:latest bash

  • 复制C++库镜像,因此我在容器上构建它:

代码语言:javascript
运行
复制
docker cp opencascade-dev-mirror [my-container-id]:/home

  • 在构建我的图书馆之后,我做了:

代码语言:javascript
运行
复制
sudo docker commit --author "Tawfik" --message "opencascade-build" [my-container-id] tawfik741/opencascade-build:amd64

  • ,并将其推送到私人回购中,其中包括:

代码语言:javascript
运行
复制
docker push tawfik741/opencascade-build:amd64 

在发现忘记从容器中删除opencascade-dev-mirror之后,我决定运行容器,删除它,并保存新映像,尝试保存一个新映像,但它与旧映像大小完全相同:

  • 我使用:

从映像中运行了码头容器

代码语言:javascript
运行
复制
docker run -it tawfik741/opencascade-build:amd64 /bin/bash

  • I更新了容器,然后运行:

代码语言:javascript
运行
复制
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映像相同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 13:00:39

创建图像后,不能编辑、修改或更新图像。

您可以根据现有的图像创建新的映像。Docker在内部工作的方式,新的图像总是包含整个旧的图像,并描述什么改变了旧的形象。这样做永远不会使新图像变小,只会变大。

您需要重新开始并创建一个新的图像,从原始的基本图像开始。如果使用标准的docker build命令和Dockerfile系统,应该可以删除将大文件添加到图像并重新生成的COPY行。如果您正在使用docker commit,您需要完全重新开始,并希望以相同的方式重复相同的手动命令;即使您试图“快速迭代”,切换到Dockerfile也会好得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63389984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档