繁体   English   中英

在没有 docker-compose.yml 文件的情况下杀死 docker-compose 容器

[英]Kill docker-compose containers without docker-compose.yml file

我有一些由 docker-compose 提供的 docker 容器,并带有restart: always标志。 但是我不小心删除了 docker-compose.yml 文件。

如何删除这些容器,以便它们不会自动重新启动?

没有 compose 文件,docker-compose 无法猜测需要杀死的容器的名称。 您需要使用 docker 命令手动执行此操作:

docker container ls
docker rm -f <container-name-or-id>

您可以使用docker ps -a列出所有正在运行的容器。 在您可以使用docker stop container-name单独停止您想要的容器之后,您可以使用docker rm $(docker ps -a -q)删除和删除所有停止的容器。

此外,如果您还想删除 docker 图像,您可以使用docker images列出现有图像,然后在docker rmi image-name删除图像。

我有一个类似的问题 - 我不想获取 .yml 文件只是为了删除容器。 由于 docker-compose 为容器添加标签,我们可以使用这些标签来过滤匹配的容器,然后将其删除。

要删除docker-compose.yml在 shell(bash 或类似的)中为项目 ProjectName(通常是docker-compose.yml所在文件夹的名称)创建的所有容器,请执行以下命令:

docker ps --filter 'label=com.docker.compose.project=ProjectName' --format {{.ID}} | xarg -n 1 docker rm --force --volumes

带有过滤器的docker ps提供容器列表,提供格式以便仅打印容器 ID
xargs -n 1 - 获取容器 ID 列表并在每个容器上执行目标命令,提供容器 ID 作为目标的参数
docker rm删除现有的容器
--force - 也停止运行容器(否则不会停止或删除正在运行的容器)
--volumes - 还删除与容器关联的任何匿名卷

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM