gpt4 book ai didi

docker - 如何更正 makefile 中的 docker,它需要至少 1 个参数才能删除所有容器命令

转载 作者:行者123 更新时间:2023-12-04 16:50:31 28 4
gpt4 key购买 nike

docker 命令“docker container rm $(docker ps -aq) -f”在命令行中工作正常。但是,当我尝试使用以下目标(“remove_all_containers”)从 makefile 运行它时...

remove_all_containers:
docker container rm $(docker ps -aq) -f

我收到错误消息:
host_name$ make remove_all_containers
docker container rm -f
"docker container rm" requires at least 1 argument.
See 'docker container rm --help'.

Usage: docker container rm [OPTIONS] CONTAINER [CONTAINER...]

Remove one or more containers
make: *** [remove_all_containers] Error 1

很明显,当从 makefile 中执行时,“ docker ps”命令没有正确执行,其结果可以被收集并传递给“ container rm”命令。

我的问题:如何让“ docker ps”命令从makefile中正确运行,并将其结果正确传递给“ docker rm”命令,也在 中生成文件 ?

提前感谢您提供的任何帮助。

最佳答案

您需要第二个 $在你的食谱中:

remove_all_containers:
docker container rm $$(docker ps -aq) -f
# ^

单例 $解析生成文件时,将扩展为生成文件变量。它扩展为空白。因此使通行证 docker container rm -f到你的 shell 。第二个 $标志导致扩大 $$$ ,它将通过 docker container rm $(docker ps -aq) -f bash,我猜这就是你想要的。

请注意,如果您输入 shell在那里,正如@EricMd 所提议的,它将运行一个 shell 命令,但该命令将在 Makefile 读取时间运行,而不是在执行配方的时间。如果 docker ps -aq命令依赖于您构建的任何其他工件,它不起作用。

关于docker - 如何更正 makefile 中的 docker,它需要至少 1 个参数才能删除所有容器命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54299030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com