如何解决更新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-correction
与tawfik741/opencascade-build:amd64
图片的大小相同。
解决方法
创建图像后,您将无法编辑,修改或更新图像。
您可以基于现有图像创建新图像。 Docker在内部工作的方式中,新映像始终包含整个旧映像,以及对旧映像所做更改的描述。这样做永远不会使新图像变小,只会变大。
您需要重新创建并从原始基础图像开始创建新图像。如果您使用标准的docker build
命令和Dockerfile系统,则只需删除将大文件添加到映像并重新构建的COPY
行即可。如果您使用的是docker commit
,则需要重新开始,并希望以相同的方式重复相同的手动命令。即使您尝试“快速迭代”,转而使用Dockerfile也会更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。