杀死没有docker-compose.yml文件的docker-compose容器

8iwquhpp  于 12个月前  发布在  Docker
关注(0)|答案(3)|浏览(138)

我有一些由docker-compose提供的带有restart: always标志的docker容器。但我不小心删除了docker-compose.yml文件。
如何删除这些容器,使它们不会自动重新启动?

ni65a41a

ni65a41a1#

如果没有compose文件,docker-compose无法猜测需要杀死的容器的名称。您需要使用docker命令手动完成:

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

字符串

t9aqgxwy

t9aqgxwy2#

您可以使用docker ps -a列出所有正在运行的容器。之后您可以使用docker stop container-name单独停止您想要的容器,然后您可以使用docker rm $(docker ps -a -q)删除和移除所有已停止的容器。
另外,如果你也想删除docker镜像,你可以使用docker images来列出现有的镜像,然后使用docker rmi image-name来删除镜像。

xzv2uavs

xzv2uavs3#

我也有类似的问题-我不想只为了删除容器而获取.yml文件。由于docker-compose会向容器添加标签,我们可以使用这些标签来过滤匹配的容器,然后删除它们。
要删除docker-compose在shell(bash或类似程序)中为项目ProjectName(通常是docker-compose.yml所在文件夹的名称)创建的所有容器,请执行以下操作:

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

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

相关问题