我正在阅读Docker文档,但我不了解它们之间的区别:
和
docker rm $(docker container ls -aq)
请注意,在链接中,我列出的第二个命令是docker rm $(docker ps -a -q)
,但是该命令和我编写的命令之间没有区别。container ls
只是在新版本中的ps
命令。
似乎这两个命令都删除了所有停止的容器。不仅如此,还是仅仅是同义词?
我认为没有实质性差异。-a
尽管这意味着列出所有容器,结果docker rm ...
也将尝试删除正在运行的容器。这给出了您在下面看到的错误:
守护程序的错误响应:您无法删除正在运行的容器[...]尝试删除或强制删除之前,请先停止容器
例如:
$ docker container run --rm -itd alpine:latest
0ec4d7459d35749ecc24cc5c6fd748f4254b0782f73f1ede76cf49b1fc53b2d4
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ec4d7459d35 alpine:latest "/bin/sh" 4 seconds ago Up 1 second jovial_ritchie
$ docker rm $(docker container ls -aq)
Error response from daemon: You cannot remove a running container 0ec4d7459d35749ecc24cc5c6fd748f4254b0782f73f1ede76cf49b1fc53b2d4. Stop the container before attempting removal or force remove
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
--force
,-f
使用:在这种情况下,这些命令执行2项不同的操作:
docker rm -f ...
强制删除正在运行的容器(使用SIGKILL),这意味着它将删除正在运行的容器。
$ docker rm -f $(docker container ls -aq)
0ec4d7459d35
docker container prune -f
会在不要求确认的情况下删除所有停止的容器(不会[y/N]
打印提示)。
$ docker container prune -f
Total reclaimed space: 0B
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句