【Docker】常用帮忙、镜像、容器、其他命令合集(1)
- 博主有话说
- 帮助命令
-
- [docker version (显示docker的版本信息)](#docker version (显示docker的版本信息))
- [docker info (显示docker的系统信息,包括镜像和容器的数量)](#docker info (显示docker的系统信息,包括镜像和容器的数量))
- [docker 命令 --help (帮助命令)](#docker 命令 --help (帮助命令))
- 镜像命令
-
- [docker images (查看所有本地的主机上的镜像)](#docker images (查看所有本地的主机上的镜像))
- [docker search 搜索镜像](#docker search 搜索镜像)
- [docker pull 下载镜像](#docker pull 下载镜像)
- [docker rmi 删除镜像](#docker rmi 删除镜像)
博主有话说
在完成了前面的相关环境部署和LINUX指令学习后,继续跟着狂神大佬 学习Docker的使用,对涉及到的常用帮忙、镜像、容器、其他命令进行总结 ,方便后续的查看与学习。当然,也需要结合docker官网帮助文档进行,事倍功半!
帮助命令
docker version (显示docker的版本信息)

docker info (显示docker的系统信息,包括镜像和容器的数量)

docker 命令 --help (帮助命令)

镜像命令
docker images (查看所有本地的主机上的镜像)

- REPOSITORY 镜像的仓库源
- TAG 镜像的标签
- IMAGE ID 镜像的id
- CREATED 镜像的创建时间
- SIZE 镜像的大小
可选项
- -a ,- -all 列出所有镜像
- -q ,- -quiet 只显示镜像的id

docker search 搜索镜像

可选项,通过搜索来过滤
- --filter=STARS=3000 搜索出来的镜像就是STARS大于3000的,注意有2个-符号。
这边有个重点,可以发现博主用的是狂神大佬视频中的图片,没有进行测试,是因为博主尝试了修改镜像源依旧不行,报:
docker search mysql
Error response from daemon: Get "https://index.docker.io/v1/search?q=mysql\&n=25": dial tcp 114.43.24.59:443: i/o timeout
在之前的博文【CentOS7】docker安装成功后测试,报Unable to find image 'hello-world:latest' locally中,介绍了镜像源的修改,尤其是在要点补充 一节中,阐述了2种镜像源修改的区别。在这里,博主进行多个镜像源的如下修改,发现依旧不行。
但是直接进行镜像源的访问,可以正常访问,而且通过curl -v 镜像源地址
手动测试镜像源的连通性,都是正常的,没有报任何错误。此时,豆包大神闪亮登场 。原来,docker search
命令默认直接查询 Docker Hub 官方接口(https://index.docker.io/v1/search),镜像源(registry-mirrors)主要影响 docker pull
拉取镜像的行为,对搜索功能的加速效果有限。
用docker pull
去进行mysql库的拉取,成功!原来如此!当然大神也提到,如果需要搜索镜像,可以使用国内镜像源提供的网页搜索,或第三方工具(如 dockle、skopeo) ,其中 skopeo是用于管理容器镜像的工具,在CentOS系统中,用sudo yum install skopeo -y
安装,然后类似skopeo search docker://hub-mirror.c.163.com/library/mysql
指令去进行指定镜像源的搜索,提供的指令用于从网易镜像源搜索 mysql 相关镜像。

docker pull 下载镜像
bash
docker pull 镜像名[:tag]
如果不写tag,默认就是latest,如果docker pull mysql:5.7
,就是下载5.7版本的mysql。而且可以从下图中看出,下载的签名和真实地址,因此,用docker pull mysql
与docker pull docker.io/library/mysql:latest
一样。
除此之外,可以发现,下载是分层下载的 ,而docker 镜像的核心特性之一是基于联合文件系统(Union File System,简称UnionFS)构建,它是实现docker镜像分层存储、轻量级特性的关键技术。
联合文件系统
联合文件系统的核心原理
联合文件系统是一种 分层、轻量级且高性能的文件系统,它能够将多个独立的目录(称为 "层")以 透明的方式合并为一个单一的文件系统视图。用户看到的是合并后的统一目录,而实际数据分散在不同的层中。
联合文件系统在docker中的作用
- 镜像分层存储
- Docker 镜像由多个只读层(layer)组成,每层包含文件系统的增量变化;
- 例如:基础镜像(如
ubuntu
)是底层,在其之上可能有安装 python 的层,再之上有安装应用代码的层; - 联合文件系统将这些层 "联合" 起来,呈现为一个完整的文件系统。
- 写时复制
- 当容器启动时,Docker 会在镜像的只读层 之上添加一个可写层;
- 容器对文件的修改只会发生在可写层,不会影响底层的只读镜像;
- 若修改的文件来自底层镜像,会先将文件复制到可写层再修改,这就是写时复制。
- 空间高效利用
- 不同镜像可以共享相同的底层层,避免重复存储;
- 例如:两个基于同一
ubuntu
镜像的应用,只会存储一份ubuntu
基础层。这个在进行同一库升级时候,可以很明显的发现,部分文件由于已经存在,会直接跳过下载。
- 快速构建与分发
- 构建镜像时,每一步操作(如
RUN、COPY
)都会生成新层; - 分发镜像时,只需传输新增的层,而非整个镜像。
因此,我们可以说,联合文件系统通过分层存储、写时复制、层共享机制,使 Docker 镜像实现了 轻量、高效、可复用 的特性。
在这里需要在唤醒一下镜像与容器的概念:
- 镜像是一个包含运行应用所需的所有代码、依赖、配置文件和运行时环境的只读模板,可以理解为 "容器的源代码" 或 "容器的快照"。
- 镜像是创建 Docker 容器的基础,容器则是镜像的运行实例。
- 镜像的核心特点:只读性、分层存储、可复用性、跨平台一致性。
- 简单来说,镜像就像一个 "打包好的软件安装包",包含了运行应用的所有东西,而容器就是这个 "安装包" 运行起来的状态;镜像是只读模板,类似"类",容器是镜像的运行实例,类似"对象"。
docker rmi 删除镜像
bash
docker rmi -f 镜像id # 删除指定镜像
docker rmi -f 镜像id 镜像id # 删除多个镜像
docker rmi -f $(docker images -aq) # 删除全部的镜像

针对docker rmi -f $(docker images -aq)
指令,docker images -aq
是列出本地所有镜像的镜像id;$(...)
是 Shell 的命令替换语法;docker rmi -f
通过docker rmi --help
可知是强制删除。因此,是先执行docker images -aq
获取所有的镜像id,然后通过docker rmi -f
强制删除获取的所有id。