我知道如果我更改了Dockerfile
或构建目录,我应该运行docker-compose build
。这肯定意味着docker-compose在其已经构建的图像的某处有一些缓存。
它在哪里?我该如何清除它?
我想回到docker-compose up
被迫执行初始构建步骤的状态,而我无需记住运行docker-compose build
。
我已经运行docker stop $(docker ps -aq)
和docker X prune
(对于容器,图像,卷,网络中的X),但docker-compose up
仍然拒绝在{{1}中运行构建步骤1}}。
或者我完全误解了docker-compose是如何工作的?
答案 0 :(得分:1)
您可以传递额外的参数(--no-cache)以在构建过程中跳过使用缓存。
docker@default:~$ docker-compose build --help
Build or rebuild services.
Services are built once and then tagged as `project_service`,
e.g. `composetest_db`. If you change a service's `Dockerfile` or the
contents of its build directory, you can run `docker-compose build` to rebuild it.
Usage: build [options] [--build-arg key=val...] [SERVICE...]
Options:
--compress Compress the build context using gzip.
--force-rm Always remove intermediate containers.
--no-cache Do not use cache when building the image.
--pull Always attempt to pull a newer version of the image.
-m, --memory MEM Sets memory limit for the build container.
--build-arg key=val Set build-time variables for services.
docker@default:~$
答案 1 :(得分:0)
docker-compose使用图片,您可以使用docker images
:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_ubuntu latest a7dc4f9bbdfb 19 hours ago 158MB
ubuntu 16.04 0b1edfbffd27 3 weeks ago 113MB
hello-world latest f2a91732366c 6 months ago 264MB
docker-compose图像的前缀(通常)是您正在运行docker-compose
的目录的名称。对我来说,docker_ubuntu
图像。
docker image prune
认为图片正在使用中,所以它不会修剪它们。
要摆脱docker-compose图像,您需要明确删除它:
docker image rm docker_ubuntu