欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

Docker 入门教程:镜像和容器删除

随着我们使用 Docker 的次数越来越多,我们电脑里面可能已经存在很多 Docker 镜像,大量的镜像会占据大量的存储空间,所有很有必要清理一些不需要的镜像。

Docker 入门教程:镜像和容器删除
如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

镜像的删除

在删除镜像之前,我们可以看下系统里面都有哪些镜像:

[iteblog@iteblog.com ~]# docker images
REPOSITORY                     TAG        IMAGE ID            CREATED             SIZE
hello-world                    latest     bf756fb1ae65        4 months ago        13.3kB
iteblog/hbase-phoenix-docker   1.0        978d21a23ec3        6 months ago        1.55GB
iteblog/hbase-docker           1.0        677d048ab37f        6 months ago        840MB

Docker 为我们提供了很多用于删除镜像的方法,具体如下。

docker image rm

这个命令可以删除一个或多个镜像,语法如下:

docker image rm [OPTIONS] IMAGE [IMAGE...]

有些镜像因为依赖关系可能删不了,这时候可以加上 --force-f 强制删除。比如我们想删除上面的 hello-world 这个镜像,可以如下操作:

[iteblog@iteblog.com ~]# docker image rm bf756fb1ae65
Untagged: hello-world:latest
Untagged: hello-world@sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63
[iteblog@iteblog.com ~]#

提供镜像的 IMAGE ID 即可删除对应镜像。

docker rmi

这个命令和上面一样,也是删除一个或多个镜像,语法如下:

docker rmi [OPTIONS] IMAGE [IMAGE...]

例子:

[iteblog@iteblog.com ~]$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

[iteblog@iteblog.com ~]$ docker rmi test1:latest
Untagged: test1:latest

[iteblog@iteblog.com ~]$ docker rmi test2:latest
Untagged: test2:latest


[iteblog@iteblog.com ~]$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)

[iteblog@iteblog.com ~]$ docker rmi fd484f19954f
Untagged: test:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

docker image prune

如果想移除所有没有使用的镜像,可以使用这个命令。没有使用的镜像就是没有和如何容器关联的镜像。语法如下:

docker image prune [OPTIONS]

例子:

[iteblog@iteblog.com ~]$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: iteblog/hbase-docker:1.0
untagged: iteblog/hbase-docker@sha256:fe3e4159ee69894b284e489a6593f0c036b64672756f5f6e94c00a584df8b7a9
deleted: sha256:677d048ab37fac3d5548daaae49a668246acce5300ff7dc7f64ef09397e08ba4
untagged: hello-world:latest
untagged: hello-world@sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63

Total reclaimed space: 13.34kB
[iteblog@iteblog.com ~]$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
iteblog/hbase-phoenix-docker   1.0                 978d21a23ec3        6 months ago        1.55GB
[root@iZ2zehs1vcgddrwqz1w2xhZ ~]#

本文中的 iteblog/hbase-phoenix-docker 有对应的容器打开,所有没有被删除。当然,你也可以加上 --filter 来过滤出满足条件的镜像,然后删除它,具体可以参见 这里。当然,删除所有没有使用的镜像也可以使用下面命令:

[iteblog@iteblog.com ~]$ docker rmi -f $(docker images -aq)
Untagged: iteblog/hbase-phoenix-docker:1.0
Untagged: iteblog/hbase-phoenix-docker@sha256:c1126991c0c485dfd9c59f161ce2ed0c3f43fbe9f596f6a6f4e028897774bf12
Deleted: sha256:978d21a23ec3bf88ae37de8f5bd43cc23484eba1dbc5abb50fc6ae6f1b46dea0

批量删除tag为none的image

[iteblog@iteblog.com ~]$ docker images | grep none | awk '{print $3}' | xargs docker rmi

容器删除

同样,我们可以使用下面命令查看出系统中所有的容器,包括正在运行或者已经停止的:

[iteblog@iteblog.com ~]$ docker ps -a
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                                                            NAMES
6c9124dcaa28        iteblog/hbase-phoenix-docker:1.0   "/usr/bin/supervisord"   9 minutes ago       Up 9 minutes        2181/tcp, 8765/tcp, 60000/tcp, 60010/tcp, 60020/tcp, 60030/tcp   boring_elbakyan

docker container rm

这个命令用于删除一个或多个容器,语法如下:

docker container rm [OPTIONS] CONTAINER [CONTAINER...]
[iteblog@iteblog.com ~]$ docker container rm 6c9124dcaa28 -f
6c9124dcaa28

docker rm

这个命令和上面一样,也是删除一个或多个容器,语法如下:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

例子:

[iteblog@iteblog.com ~] docker rm abdf6f8d70fc -f
abdf6f8d70fc

docker container prune

这个命令用于删除所有已经 stopped 的容器,语法如下:

docker container prune [OPTIONS]

例子:

[iteblog@iteblog.com ~] $ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
d23b5611cae58fd6845f528f997357a642d74e8f2076e60d38405fdec89ab6a2

Total reclaimed space: 67.39MB

docker image prune 命令一样,也支持 --filter 来过滤出满足条件的容器,然后删除它,具体可以参见这里。当然,删除所有已经停止的镜像也可以使用下面命令:

[iteblog@iteblog.com ~] $ docker ps -a | grep 'Exited' | awk '{print $1}' | xargs docker stop | xargs docker rm
1653167d8fdf

参考
https://docs.docker.com/engine/reference/commandline/rmi/
https://docs.docker.com/engine/reference/commandline/rm/
https://docs.docker.com/engine/reference/commandline/container_rm/
https://docs.docker.com/engine/reference/commandline/image_rm/
https://docs.docker.com/engine/reference/commandline/system_prune/
https://docs.docker.com/engine/reference/commandline/image_prune/
https://docs.docker.com/engine/reference/commandline/container_prune/

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Docker 入门教程:镜像和容器删除】(https://www.iteblog.com/archives/9799.html)
喜欢 (1)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!