docker命令:docker-stack相关操作、使用 inspect 命令查看镜像详细信息、docker rm & docker rmi & docker prune 清理删除镜像的差异

一、docker-stack相关操作

docker stack deploy --compose-file docker-compose.yml stack_name //启动stack
docker stack down service_name //关闭stack

docker stack ls // 查看stack下service列表
docker stack services service_name  //查看指定service的所有容器
docker stack ps service_name // 查看指定service的所有容器运行状态详情

二、使用 inspect 命令查看镜像详细信息

  通过 docker inspect 命令,我们可以获取镜像的详细信息,其中,包括创建者,各层的数字摘要等。

  使用 docker inspect docker镜像名:docker镜像tag

docker inspect docker.io/mysql:5.7
// docker.io/mysql  -  镜像名
// 5.7  -  镜像tag

  可以看到该镜像的具体信息,比如上面的架构:arm64

  docker inspect 返回的是 JSON 格式的信息,如果您想获取其中指定的一项内容,可以通过 -f 来指定,如获取镜像大小:

docker inspect -f {{".Size"}} docker.io/mysql:5.7

  就可以直接获取到镜像的size。再比如下面获取镜像架构:

三、docker rm & docker rmi & docker prune 清理删除镜像的差异

docker rm : 删除一个或多个 容器
docker rmi :  删除一个或多个 镜像
docker prune: 用来删除不再使用的 docker 对象

1、docker rm命令:

docker rm [OPTIONS] CONTAINER [CONTAINER...]
//  OPTIONS说明:
    -f : 通过SIGKILL信号强制删除一个运行中的容器
    -l : 移除容器间的网络连接,而非容器本身
    -v : 删除与容器关联的卷

// 强制删除容器db01、db02:
docker rm -f db01 db02

// 移除容器 my-nginx 对容器db01的连接,连接名db01:
docker rm -l db01 

// 删除容器 my-nginx,并删除容器挂载的数据卷:
docker rm -v my-nginx

2、docker rmi 命令:

docker rmi [OPTIONS] IMAGE [IMAGE...]
//  OPTIONS说明:
    -f : 强制删除
    --no-prune : 不移除该镜像的过程镜像,默认移除

// 强制删除本地镜像 mongo:3.2
docker rmi -f mongo:3.2

3、docker prune 命令

// 删除 所有未被 tag 标记和未被容器使用的镜像:
docker image prune

// 删除 所有未被容器使用的镜像:
docker image prune -a

// 删除 所有停止运行的容器:
docker container prune

// 删除 所有未被挂载的卷:
docker volume prune

// 删除 所有网络:
docker network prune

// 删除 docker 所有资源:
docker system prune

4、清理删除镜像

  通过如下两个都可以删除镜像:

docker rmi [image]
docker image rm [image]

(1)支持的子命令如下:

  • -f, -force: 强制删除镜像,即便有容器引用该镜像;
  • -no-prune: 不要删除未带标签的父镜像;

(2)当同一个镜像拥有多个标签时,执行 docker rmi 命令,只是会删除了该镜像众多标签中您指定的标签而已,并不会影响原始的那个镜像文件。

(3)如果某个镜像不存在多个标签,当且仅当只有一个标签时,执行删除命令时,您就要小心了,这会彻底删除镜像。

(4)通过 ID 删除镜像:除了通过标签名称来删除镜像,我们还可以通过制定镜像 ID, 来删除镜像,如:docker rmi ee7cbd482336,一旦制定了通过 ID 来删除镜像,它会先尝试删除所有指向该镜像的标签,然后在删除镜像本身。

(5)删除镜像的限制:删除镜像很简单,但也不是我们何时何地都能删除的,它存在一些限制条件。当通过该镜像创建的容器未被销毁时,镜像是无法被删除的,因为有容器正在引用他。除非通过添加 -f 子命令,也就是强制删除,才能移除掉该镜像。但是,我们一般不推荐这样暴力的做法,正确的做法应该是:

  1. 先删除引用这个镜像的容器;
  2. 再删除这个镜像;

(6)清理镜像:我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:

docker image prune

  它支持的子命令有:

  • -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
  • -f, --force:强制删除镜像文件,无需弹出提示确认;

  另外,执行完 docker image prune 命令后,还会告诉我们释放了多少存储空间!

posted @ 2021-05-24 10:32  古兰精  阅读(1715)  评论(0编辑  收藏  举报