docker 容器和镜像管理
docker容器管理
下面介绍docker容器管理相关命令。(命令可能需要使用sudo)
删除容器
查看所有容器
首先注意区分这两条命令,根据docker官方文档的教程:
docker container ls # List all running containers
docker container ls -a # List all containers, even those not running
所以我们应该使用 docker container ls -a 查看所有容器
可以看到我这里创建了很多IMAGE是4f03fc6e74f6的,重复的容器。
(docker ps [OPTIONS]命令有别名docker container ls [OPTIONS])
删除一个容器
格式:docker rm container-id
栗子:docker rm 82523c7dcf52
Usage: docker rm [OPTIONS] CONTAINER [CONTAINER…]
我们还需要知道查看容器id的命令
查看容器id的命令
格式:docker ps -a
一个一个删除容器,效率太低了。(是啊,你之前创建了那么多重复的容器,当然一个一个删除起来麻烦啊)
确实有一次删除多个容器的命令。
一次删除多个容器
格式:docker rm $( docker ps –a –f ancestor=image-id )
其中ancestor的含义如下,来源docker官方文档。
解释下这个命令,docker ps -a是列出所有容器,-f是设置filter,filter的格式是key=value,键值对的形式,如果有多个filter,需要传递多个参数
(e.g. –filter “foo=bar” –filter “bif=baz”)
(没错,这就是官网的教程2333)
通过docker ps -a -f得到,同源镜像的所有容器。(虽然貌似这里混入了一个奇怪的东西,但是我懒,没有去探索为什么。)
得到了要删除的容器的id,直接docker rm就好了。
docker ps -a再次查看所有容器,删除成功。
删除镜像
查看所有镜像
命令 docker image ls -a
(没错,又是之前没好好学,创建了很多重复的IMAGE,当执行下载Image的命令后,在本地查看Images时,下载的Image的Repository和Tag都为<none>)
停止所有容器命令
先提一下停止所有容器的命令
命令: docker stop $(docker ps -a -q)
其中 -q 只显示数字ID
删除镜像
直接暴力删除镜像是不行的哦,删除image前需要删除依赖这个image的所有容器。删除容器前需要保证容器是停止的。
删除镜像命令
Usage:docker rmi [OPTIONS] IMAGE [IMAGE…]
栗子:docker rmi image-id
使用图形化管理工具
其实我们并不是一定要通过cli来管理的,可以使用图形化管理工具。
参考来源:http://blog.****.net/pmlpml/article/details/71083907
几乎所有容器开发商都有自己的 UI 管理界面。这些 UI 共同的特点就是就是本身以一个容器的方式存在,例如:Portainer。
启动 portainer
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
这里最关键的部分 -v /var/run/docker.sock:/var/run/docker.sock 容器与主机共享了文件 /var/run/docker.sock 从而,容器获得了 docker 驻守(daemon)进程 REST API SDK 入口。
在浏览器输入 http://localhost:9000 就进入了图形管理界面,下图是Containers界面。
成功删除