我创建了一个ubuntu容器,复制了我将在其上使用的c++库镜像(大小为1.2GB)(在对接容器的主目录上),在此基础上构建了镜像,并在创建映像和推送到对接中心之前忘记移除镜像。
然后,我尝试从映像中重新运行容器,以删除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
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 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
映像相同。
发布于 2020-08-13 13:00:39
创建图像后,不能编辑、修改或更新图像。
您可以根据现有的图像创建新的映像。Docker在内部工作的方式,新的图像总是包含整个旧的图像,并描述什么改变了旧的形象。这样做永远不会使新图像变小,只会变大。
您需要重新开始并创建一个新的图像,从原始的基本图像开始。如果使用标准的docker build
命令和Dockerfile系统,应该可以删除将大文件添加到图像并重新生成的COPY
行。如果您正在使用docker commit
,您需要完全重新开始,并希望以相同的方式重复相同的手动命令;即使您试图“快速迭代”,切换到Dockerfile也会好得多。
https://stackoverflow.com/questions/63389984
复制相似问题