Docker 入门 2 镜像基本操作

前言

我们实现了 为 Debian 获取 Docker Engine - Community ,本文接着简述 Docker 容器的基本操作。

Docker Image 镜像是:容器的基石、层叠的只读文件系统、联合加载。

使用 Docker 镜像

镜像仓库和标签

仓库 Repository 是镜像仓库, 用于存储具体的docker镜像,起到的是仓库存储作用。例如:ubuntu 是 Ubuntu:latest、Ubuntu:20.04、Ubuntu:18.04、Ubuntu:14.04.1 等等的 Repository

仓库 Registry 是同系列镜像的集合(默认是官方的),用于管理镜像仓库,起到的是服务器下放资源的作用。

拿近期的新冠病毒的热点来举例:

  • “口罩” 有 k95、kn95、一次性医用口罩、棉布口罩等等。“酒精” 是浓度 90%、75%、50% 等等。而你拿 一次性医用口罩75% 浓度的酒精塑料袋打包 在一起带回了家。

  • 一次性医用口罩 就是 口罩 Repository 下的一个 image ,它的 Tag 就是 “一次性医用”;

  • 75% 浓度的酒精 就是 酒精 Repository 的一个 image ,它的 Tag 就是 “75% 浓度”;

  • 打包成一个塑料袋,这个塑料袋就是你的一个 Registry

获取镜像

对于官方 Docker Hub 中存在的公开仓库的镜像,可以使用如下指令:

docker pull [OPTIONS] NAME [:TAG]
  • -a :默认 --all-tags=false ,将所有匹配到搜索名字的镜像全部下载到本地。
  • 可添加标签拉取。

特别的,对于 Docker Hub 官方认证的镜像可以省略 用户名

docker pull [用户名]/[镜像名]:[TAG]

当不显式使用 TAG 进行指定镜像版本信息时,默认使用 latest 作为 TAG 。就稳定性而言,因 latest 标签的镜像会就发布的最新版本进行更新,所以应尽量指定非 latest 的镜像。

对于其他第三方或者本地仓库而言,则需要再仓库名称前指定完整的仓库地址。

查找镜像

docker search [OPTIONS] TERM
  • 最多一次返回25个结果
  • --automated :默认 false ,自动化显示镜像
  • --no-trunc :默认 false ,不截断显示输出
  • -s :--stars=0 ,限定显示结果的最低星级

列出镜像列表

docker images [OPTIONS] [REPOSITORY]
  • 无参数
  • -a :--all=false ,显示所有镜像,默认不显示中间层的镜像,默认截断镜像的唯一 id 。
  • -f :--filter=[] ,在显示时的过滤条件。
  • --no-trunc :不使用截断的方式显示数据。
  • -q :--quiet=false ,只显示镜像的唯一 id 。

查看镜像信息

docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
  • -f :--format=""

删除镜像

docker rmi [OPTIONS] IMAGE [IMAGE]
  • -f :--force=false ,强制删除镜像
  • --no-prune :=false,保留要删除镜像的父镜像

注意:

现在 ubuntu 仓库下 看上去 有三个镜像,实际上只有两个,可以通过 IMAGE ID 查看。

每个镜像都可以有多个不同的标签 TAG 。

$ docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              72300a873c2c        3 weeks ago         64.2MB
ubuntu              18.04               72300a873c2c        3 weeks ago         64.2MB
ubuntu              14.04               6e4f1fe62ff1        2 months ago         64.2MB

一个镜像是 72300a873c2c ,它有两个TAG :latest、18.04。

删除 ubuntu:18.04

$ docker rmi ubuntu:18.04
Untagged: ubuntu:18.04

这里 看上去 删除了一个镜像,实际上并没有真正删除这个镜像。

真正删除镜像要通过 ID 来删除:

$ docker rmi <IMAGE ID>

当然,你也可能遇见如下问题:

Error response from daemon: conflict: unable to delete 704eae0e0bc3 (must be forced) - image is being used by stopped container c24e348b3014

这是由于基于该镜像的容器依然存在,需要移除该容器才能删除镜像。

原文地址:https://www.cnblogs.com/Yogile/p/12506803.html