查看镜像
命令:
docker images //或 docker image ls
作用:列出本机主机已有镜像的基本信息
示例:
在列出的信息中,字段参数含义:
-
REPOSITORY
:表示镜像的仓库源,即来源于那个仓库 -
TAG
:镜像的标签信息,18.04
、latest
表示不同的版本信息。 标签只是标记, 并不能标
识镜像内容; -
IMAGE ID
:镜像的ID(唯一标识),如果两个镜像的ID相同,说明它们指向了同一个镜像, 只是具有不同标签名称而已; -
CREATED
:创建时间, 说明镜像最后的更新时间 -
SIZE
:镜像文件大小,ps:优秀的镜像往往体积都很小
备注:
- 其中镜像的ID信息十分重要, 它唯一标识了镜像。在使用镜像ID的时候, 一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。
- 同一仓库源可以有多个
TAG
,代表这个仓库源的不同个版本,如ubuntu
仓库源里,有15.10
、14.04
等多个不同的版本,我们可以使用REPOSITORY:TAG
来定义不同的镜像。- 只要
IMAGE ID
相同,表示它们指向同一镜像,尽管它们REPOSITORY:TAG
可能不同。- 镜像大小信息只是表示了该镜像的逻辑体积大小, 实际上由于相同的镜像层本地只会存储一份, 物理上占用的存储空间会小于各镜像逻辑体积之和。
添加镜像标签
为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任
意添加新的标签。
命令:
docker [iamge] tag REPOSITORY:TAG 新REPOSITORY:TAG
示例:
可以注意到, 这些
mynginx:1.0
镜像的ID跟nginx:latest
,nginx:1.19.0
是完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag
命令添加的标签实际上起到了类似链接的作用
获取新镜像
当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull
命令来下载它。
docker [iamge] pull REPOSITORY:TAG
搜索镜像
Dcoker Hub 镜像网站
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
docker search 命令
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 mysql 的镜像。我们可以通过 docker search mysql
命令来寻找适合我们的镜像:
默认的输出结果将按照星级评价进行排序
-
NAME
: 镜像仓库源的名称 -
DESCRIPTION
: 镜像的描述 -
OFFICIAL
: 是否 docker 官方发布 -
STARS
: 点赞数量,类似 Github 里面的 star,表示点赞、喜欢的意思。 -
AUTOMATED
: 自动构建
获取镜像
命令:
docker [image] pull [选项] REPOSITORY[:TAG]
如果不显示指定TAG,Docker默认使用latest标签,下载镜像仓库中最新的镜像
一般情况下,如果是从官方仓库注册服务器下载镜像文件时是不需要加上仓库注册服务器地址的,但是如果是从非官方仓库注册服务器下载的话,就需要加上注册服务器地址,例如我们要从阿里云下载ubuntu16.04
的镜像,那么我们应该这样写命令:
docker pull registry-vpc.cn-beijing.aliyuncs.com/nginxd/nginx
配置国内镜像源
Docker 默认连接的镜像仓库是国外的,速度不是很快,所以我们可以配置国内的 Docker 镜像仓库。
vim /etc/docker/daemon.json
使用以下配置:
{
"registry-mirrors": ["镜像仓库地址"]
}
重启dcoker服务
systemctl restart docker
删除镜像
命令:
docker rmi REPOSITORY:TAG
//REPOSITORY:TAG 可用 IMAGE ID 代替
docker image rm REPOSITORY:TAG
//REPOSITORY:TAG 可用 IMAGE ID 代替
作用:删除本地镜像
选项:
-
-f
:强制删除镜像,即使有容器依赖它 -
-no-prune
:不用清理未带标签的父镜像
注意:
当有该镜像创建的容器存在时, 镜像文件默认是无法被删除的。如果要想强行删除镜像, 可以使用-f参数。 通常并不推荐使用 -f
参数来强制删除存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。
使用标签删除镜像
示例:
当同 一 个镜像拥有多个标签的时候,
docker rmi
命令只是删除了该镜像多个标签中的指定标签而巳, >并不影响镜像文件。因此上述操作相当于只是删除了镜像2622e6cca7eb
的 一个标签副本而已。
但当镜像只剩下 一 个标签的时候就要小心了, 此时再使用docker rmi
命令会彻底删除镜像。
使用镜像ID来删除镜像
当使用 docker rmi
命令, 并且后面跟上镜像的 ID (也可以是能进行区分的部分 ID 串前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。
示例:
提示:
Error response from daemon: conflict: unable to delete 2622e6cca7eb (must be forced) - image is referenced in multiple repositories
大概意思是说:这个镜像id指向了两个repository,因此无法删除
所以还是推荐通过repository:tag方式删除。
清理镜像
使用Docker 一 段时间后, 系统中可能会遗留一些临时的镜像文件, 以及 一 些没有被使用的镜像, 可以通过docker image prune
命令来进行清理。
支持的选项:
• -a,-al
l:删除所有无用的镜像,不光是临时镜像;
• -filter filter
:只清理符合给定过滤器的镜像;
• -f,-force
:强制删除镜像,而不进行提示确认。