我正在尝试创建一个新的Docker镜像,该镜像不再使用来自正在使用图像的正在运行的容器中的卷.卷是使用docker-compose文件而不是Dockerfile创建的.问题是,当我通过新的docker-compose.yml文件启动一个新容器时,它仍然有映射的卷.我仍然需要保留这些卷和使用它们的原始容器/图像.另外,如果可能的话,我想继续使用相同的docker镜像,只需添加新版本,或者:最新版本.这是我使用的步骤:
现有图像的新版本:
docker commit
从当前运行的容器创建一个新图像:
docker commit
创建没有定义卷的新docker-compose.yml,并使用不同的项目名称运行docker-compose
docker-compose -p
在没有docker-compose的情况下运行,只需使用docker run:
docker run -d -p 8093:80
每当我运行这些卷的任何组合时,仍然会从原始图像映射卷.所以我的问题是,如何从曾经映射过卷的图像创建一个容器,但我不想再使用这些卷了?
编辑:
我试过的其他事情:
>停止容器,移除容器,重新启动docker,再次运行docker compose.没运气.
编辑2:
决定从图像开始.使用基本映像,启动了一个容器,其中包含使用现在不相关图像的更新的docker compose文件.运行docker-compose -f up -d – >即使映像没有(并且从未拥有)映射的任何卷,STILL也会映射这些相同的卷,并且当前的docker-compose.yml文件不映射文件.看起来像docker-compose缓存为项目映射的卷.
在docker-compose中搜索缓存选项后,我遇到了这篇文章:How to get docker-compose to always re-create containers from fresh images?
这似乎解决了缓存图像而不是容器缓存卷的问题
How to remove configure volumes in docker images