How does one remove an image in Docker?
我在OS X 10.8.4(Mountain Lion)下运行Vagrant下的Docker,每当我尝试删除保存的图像时,都会得到一个错误:
1 2 | $ docker rmi some-image-id 2013/07/15 hh:mm:ss unexpected JSON input |
根据
如何删除图像?
1 2 3 4 | $ docker version Client version: 0.4.8 Server version: 0.4.8 Go version: go1.1 |
nbsp;
1 2 3 | $docker info Containers: 1 Images: 3 |
有趣的是,当我运行
试试
查看所有创建的容器和
删除所有现有容器(不是图像!)运行
以下是删除Docker图像/容器的一些方法:
删除单个图像1 | docker rmi image_name:version/image-id |
删除所有图像
1 | docker rmi $(docker images -qf"dangling=true") |
杀死容器并将其移除:
1 | docker rm $(docker kill $(docker ps -aq)) |
注:用
使用grep删除除
1 | docker rmi $(docker images | grep -v 'ubuntu\|my-image' | awk {'print $3'}) |
或(不带锥子)
删除所有Docker容器
1 | docker rm $(docker ps -a -q) |
删除所有Docker图像
1 | docker rmi $(docker images -q) |
要使用图像ID从Docker中删除图像,请执行以下操作:
获取所有图像的列表
1 | docker images |
标识要删除的图像的图像ID,例如:
1 2 | REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE kweku360/java latest 08d3a9b8e166 2 weeks ago 5.733 GB` |
最后使用图像ID删除图像(只需要前三位数字)
1 | docker rmi 08d |
形象:
docker images
docker rmi image_name
docker rmi -f image_name
容器:
docker ps -a
docker rm container_id
docker rm -f container_id
更新,正如VONC在如何删除旧Docker容器中所评论的。
使用Docker 1.13(2016年第4季度),您现在可以:
请参阅pr 26108和commit 86de7c0,其中引入了一些新命令,以帮助可视化Docker守护进程数据占用磁盘的空间,并允许轻松清除"不需要的"多余空间。
1 2 3 4 5 6 7 | docker system prune WARNING! This will remove: - all stopped containers - all volumes not used by at least one container - all images without at least one container associated to them Are you sure you want to continue? [y/N] y |
移除容器
移除特定容器
1 | docker rm CONTAINER_ID CONTAINER_ID |
对于单个图像
1docker rm 70c0e19168cf对于多个图像
1docker rm 70c0e19168cf c2ce80b62174
移除退出的容器
1 | docker ps -a -f status=exited |
移除所有容器
1 | docker ps -q -a | xargs docker rm |
去除图像
1 | docker rmi IMAGE_ID |
删除特定图像
对于单个图像
1docker rmi ubuntu对于多个图像
1docker rmi ubuntu alpine
删除悬空图像悬空图像是与任何标记图像没有关系的层,因为Docker图像由多个图像组成。
1 | docker rmi -f $(docker images -f dangling=true -q) |
删除所有Docker图像
1 | docker rmi -f $(docker images -a -q) |
正在删除卷
要列出卷,请运行
删除特定卷
1 | docker volume rm VOLUME_NAME |
删除悬空卷
1 | docker volume rm $(docker volume ls -f dangling=true -q) |
移除容器及其卷
1 | docker rm -v CONTAINER_NAME |
docker help rm Remove one or more containers
rmi Remove one or more images
1 | docker rmi 91c95931e552 |
Error response from daemon: Conflict, cannot delete 91c95931e552 because the container 76068d66b290 is using it, use -f to force
FATA[0000] Error: failed to remove one or more images
查找容器ID,
1 2 3 | # docker ps -a # docker rm daf644660736 |
首先,我们必须停止并移除附带有我们要移除的Docker图像的Docker容器。
因此,首先
docker stop container-id —停止运行集装箱docker rm container-id —删除/移除容器
然后,
docker rmi image-id —删除/删除图像
为1.13和高等的版本:
1 | docker image rm [OPTIONS] IMAGE [IMAGE...] |
比较:
- 《医学文献
docker image rm 鸭 - 《大学
docker rmi 文件,
《
1 2 | --force , -f Force removal of the image --no-prune Do not delete untagged parents |
从介绍:1.13码头工人
CLI restructured
In Docker 1.13, we regrouped every command to sit under the logical object it’s interacting with. For example
list andstart of containers are now subcommands ofdocker container andhistory is a subcommand ofdocker image .These changes let us clean up the Docker CLI syntax, improve help text and make Docker simpler to use. The old command syntax is still supported, but we encourage everybody to adopt the new syntax.
码头工人提供了一些命令
Show/Remove
Images :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | docker images docker images -a # All images docker images --no-trunc # List the full length image IDs docker images --filter"dangling=true" // Show unstage images docker rmi $(docker images -f"dangling=true" -q) # Remove on unstages images docker rmi <REPOSITORY> or <Image ID> # Remove a single image docker image prune # Interactively remove dangling images docker image prune -a # Remove all images or docker rmi -f $(sudo docker images -a -q) |
Also, you can also use
filter parameters to remove set of images at
once:
实例:
1 2 3 | $docker images --filter"before=<hello-world>" // It will all images before hello-world $docker images --filter"since=<hello-world>" // It will all images since hello-world |
所以你可以删除过滤器,这样的形象:
1 2 | docker rmi $(docker images --filter"since=<hello-world>") docker rmi $(docker images --filter"before=<hello-world>") |
下面是一个shell脚本,用于删除带标记(已命名)的图像及其容器。另存为docker rmi并使用"docker rmi my image name"运行
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash IMAGE=$1 if ["$IMAGE" =="" ] ; then echo"Missing image argument" exit 2 fi docker ps -qa -f"ancestor=$IMAGE" | xargs docker rm docker rmi $IMAGE |
使用删除所有内容
步骤1:杀死所有容器
1 | for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker kill $i ; done |
第二步:先给他们打电话
1 | for i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker rm $i ; done |
第3步:使用强制删除图像
1 | for i in `sudo docker images | awk '{ print $3}'`; do sudo docker rmi --force $i ; done |
使用步骤1,以防出现错误,说明由于子项依赖而无法删除该步骤。
如果要自动/定期清理退出的容器并删除运行中的容器未使用的映像和卷,可以下载映像
我在生产环境中使用它,因为我们一天在多个服务器上部署几次,我不想去每个服务器进行清理(这会很痛苦)。
只是运行:
1 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest |
它将每30分钟运行一次(或使用delay_time=1800选项设置的时间长度),并清除退出的容器和图像。
更多详情:https://github.com/meltwater/docker-cleanup/blob/master/readme.md
对我来说,以下工作很好:
1 2 3 4 5 | > docker images REPOSITORY TAG IMAGE ID CREATED SIZE debian jessie 86baf4e8cde9 3 weeks ago 123MB ubuntu yakkety 7d3f705d307c 3 weeks ago 107MB alpine 3.5 074d602a59d7 7 weeks ago 3.99MB |
然后继续运行以下命令删除图像:
1 2 3 | > docker rmi debian:jessie > docker rmi ubuntu:yakkety > docker rmi alipine:3.5 |
诡计:Images)
1 | ahanjura@ubuntu:~$ sudo docker images |
REPOSITORY TAG IMAGE ID CREATED SIZE
88282f8eda00 19 seconds ago 308.5 MB
13e5d3d682f4 19 hours ago 663 MB
busybox2 latest 05fe66bb1144 20 hours ago 1.129 MB
ubuntu 16.04 00fd29ccc6f1 5 days ago 110.5 MB
ubuntu 14.04 67759a80360c 5 days ago 221.4 MB
python 2.7 9e92c8430ba0 7 days ago 680.7 MB
busybox latest 6ad733544a63 6 weeks ago 1.129 MB
ubuntu 16.10 7d3f705d307c 5 months ago 106.7 MB
资料图片:
1 | ahanjura@ubuntu:~$ sudo docker rmi 88282f8eda00 |
Deleted: sha256:88282f8eda0036f85b5652c44d158308c6f86895ef1345dfa788318e6ba31194
Deleted: sha256:4f211a991fb392cd794bc9ad8833149cd9400c5955958c4017b1e2dc415e25e9
Deleted: sha256:8cc6917ac7f0dcb74969ae7958fe80b4a4ea7b3223fc888dfe1aef42f43df6f8
Deleted: sha256:b74a8932cff5e61c3fd2cc39de3c0989bdfd5c2e5f72b8f99f2807595f8ece43
1 | ahanjura@ubuntu:~$ sudo docker rmi 13e5d3d682f4 |
Error response from daemon: conflict: unable to delete 13e5d3d682f4 (must be forced) - image is being used by stopped container 5593e25eb638
delete市力:
1 | ahanjura@ubuntu:~$ sudo docker rmi -f 13e5d3d682f4 |
Deleted: sha256:13e5d3d682f4de973780b35a3393c46eb314ef3db45d3ae83baf2dd9d702747e
Deleted: sha256:3ad9381c7041c03768ccd855ec86caa6bc0244223f10b0465c4898bdb21dc378
Deleted: sha256:5ccb917bce7bc8d3748eccf677d7b60dd101ed3e7fd2aedebd521735276606af
Deleted: sha256:18356d19b91f0abcc04496729c9a4c49e695dbfe3f0bb1c595f30a7d4d264ebf