镜像操作(四)

一、获取镜像

  • Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]

    • 默认地址是 Docker Hub
  • 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>

    • 对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像
docker pull [选项] [Docker Registry 地址]/仓库名[:标签]
library/ubuntu为仓库名,标签为 16.04

二、列出镜像

镜像 ID 是镜像的唯一标识,一个镜像可以对应多个标签(TAG)

docker image ls
docker images

docker save nginx:latest > /tmp/nginx.tar   //保存镜像到文件
  1. 列表中的镜像体积总和并非是所有镜像实际硬盘消耗(分层结构,可以共用)
  2. Docker Hub 中显示的体积是压缩后的体积,下载和上传过程中镜像是保持着压缩状态的,此处显示下载到本地后展开的大小。
  3. 查看镜像、容器、数据卷所占用的空间 docker system df

三、删除本地的镜像

可以通过 ==镜像ID==(足够区分就可以了)、==镜像名==(<仓库名>:<标签>)、==镜像摘要==删除

docker image rm <镜像1> [<镜像2> ...]
docker rmi 镜像

docker rmi $(docker images -q) //删除所有镜像
docker rmi -r $(docker images -q)   //强制删除所有镜像

四、虚悬镜像

镜像新版本一般会以原本镜像名和标签发布,重新docker pull后,原来的镜像会没有仓库名,也没有标签,均为 。docker build 也同样可以导致这种现象。由于新旧镜像同名,旧镜像名称被取消。

$ docker image ls -f dangling=true //显示所有虚悬镜像
$ docker image prune    //删除所有虚悬镜像

五、中间层镜像

为加速镜像构建、重复利用资源,Docker 会利用中间层镜像,docker image ls -a 看到很多无标签的镜像,与虚悬镜像不同,这些无标签的镜像很多都是中间层镜像,是其它镜像所依赖的镜像。

docker image ls 列出顶层镜像
docker image ls -a 列出包括中间层镜像在内的所有镜像

这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,因为之前说过,相同的层只会存一遍,而这些镜像是别的镜像的依赖,因此并不会因为它们被列出来而多存了一份,无论如何你也会需要它们。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除

你可能感兴趣的:(镜像操作(四))