ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## **1.基本概念** ### **镜像** 操作系统分为**内核**和**用户空间**。对于Linux系统,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像相当于是一个root文件系统。 **Docker镜像**是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。 ### **容器** 容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即**容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。** ### **仓库** Docker 的镜像仓库类似于代码仓库,用来存储和分发 Docker 镜像。镜像仓库分为公共镜像仓库和私有镜像仓库。 **从仓库拉取或者存放镜像,用镜像来创建容器。** ## **2.获取镜像** 从Docker镜像仓库获取镜像的命令是 `docker pull`。 格式为: ``` docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] ``` Docker镜像仓库地址:地址格式一般是 `<域名/IP>[:端口号]`。默认地址是Docker Hub(docker.io)。 仓库名:仓库名是两段名称,即`<用户名>/<软件名>`。对于Docker Hub,如果不给出用户名,则默认为`library`,也就是官方镜像。 ## **3.列出镜像** 使用`docker images` 或者 `docker image ls` 来列出镜像。 ![](https://img.kancloud.cn/70/4f/704f3cfcefd9a59b948da591017667ee_632x92.png) 列表包含了`仓库名`、`标签`、`镜像ID`、`创建时间`以及`所占空间`。 **镜像ID**是镜像的唯一标识,一个镜像可以对应多个**标签**。 ## **4.镜像体积** 镜像在Docker Hub中显示的体积是压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的。 `docker image ls`显示的是镜像下载到本地后,展开的大小,准确说是展开后的各层所占空间的总和。而且并非是所有镜像实际的硬盘消耗,有可能出现复用的情况,所以镜像的硬盘占用空间比镜像大小总和小。 可以使用`docker system df`命令来查看镜像、容器、数据卷所占用的空间。![](https://img.kancloud.cn/05/4d/054dcdabbb78922618aaf4a38e16b67a_726x136.png) ## **5.虚悬镜像** 镜像既没有仓库名,也没有标签,均为`<none>`。 这样的镜像原本是有镜像名和标签的,由于版本迭代,同样的名字指代的是新的镜像,旧的镜像的名称就被取消了。 ``` #查询虚悬镜像 docker image ls -f dangling=true #删除虚悬镜像 docker image prune ``` ## **6.删除镜像** 使用`docker image rm`命令删除镜像。 格式为: ``` docker image rm [选项] <镜像1> [<镜像2> ...] ``` 可以用`镜像短ID`、`镜像长ID`、`镜像名`或者`镜像摘要`来操作镜像。