我有一些由docker-compose提供的带有restart: always标志的docker容器。但我不小心删除了docker-compose.yml文件。如何删除这些容器,使它们不会自动重新启动?
restart: always
ni65a41a1#
如果没有compose文件,docker-compose无法猜测需要杀死的容器的名称。您需要使用docker命令手动完成:
docker container ls docker rm -f <container-name-or-id>
字符串
t9aqgxwy2#
您可以使用docker ps -a列出所有正在运行的容器。之后您可以使用docker stop container-name单独停止您想要的容器,然后您可以使用docker rm $(docker ps -a -q)删除和移除所有已停止的容器。另外,如果你也想删除docker镜像,你可以使用docker images来列出现有的镜像,然后使用docker rmi image-name来删除镜像。
docker ps -a
docker stop container-name
docker rm $(docker ps -a -q)
docker images
docker rmi image-name
xzv2uavs3#
我也有类似的问题-我不想只为了删除容器而获取.yml文件。由于docker-compose会向容器添加标签,我们可以使用这些标签来过滤匹配的容器,然后删除它们。要删除docker-compose在shell(bash或类似程序)中为项目ProjectName(通常是docker-compose.yml所在文件夹的名称)创建的所有容器,请执行以下操作:
docker-compose.yml
docker ps --filter 'label=com.docker.compose.project=ProjectName' --format {{.ID}} | xargs -n 1 docker rm --force --volumes
字符串docker ps与过滤器一起提供容器列表,提供格式以便仅打印容器IDxargs -n 1-获取容器ID列表,并在每个容器上执行目标命令,将容器ID作为目标的参数docker rm删除现有容器--force-同时停止运行的容器(否则运行的容器不会被停止或删除)--volumes-同时删除与容器关联的任何匿名卷
docker ps
xargs -n 1
docker rm
--force
--volumes
3条答案
按热度按时间ni65a41a1#
如果没有compose文件,docker-compose无法猜测需要杀死的容器的名称。您需要使用docker命令手动完成:
字符串
t9aqgxwy2#
您可以使用
docker ps -a
列出所有正在运行的容器。之后您可以使用docker stop container-name
单独停止您想要的容器,然后您可以使用docker rm $(docker ps -a -q)
删除和移除所有已停止的容器。另外,如果你也想删除docker镜像,你可以使用
docker images
来列出现有的镜像,然后使用docker rmi image-name
来删除镜像。xzv2uavs3#
我也有类似的问题-我不想只为了删除容器而获取.yml文件。由于docker-compose会向容器添加标签,我们可以使用这些标签来过滤匹配的容器,然后删除它们。
要删除docker-compose在shell(bash或类似程序)中为项目ProjectName(通常是
docker-compose.yml
所在文件夹的名称)创建的所有容器,请执行以下操作:字符串
docker ps
与过滤器一起提供容器列表,提供格式以便仅打印容器IDxargs -n 1
-获取容器ID列表,并在每个容器上执行目标命令,将容器ID作为目标的参数docker rm
删除现有容器--force
-同时停止运行的容器(否则运行的容器不会被停止或删除)--volumes
-同时删除与容器关联的任何匿名卷