首页 > 其他 > 详细

docker 实践一:操作镜像

时间:2019-08-20 21:59:23      阅读:81      评论:0      收藏:0      [点我收藏+]

本篇我们来详细介绍 docker 镜像的操作。

注:环境为 CentOS7,docker 19.03

之前已经说过,容器是 docker 的核心概念之一,所以对应的就需要知道它的使用方法,接下来我们就来了解 docker 镜像的添加、删除、查找等操作。

获取镜像

docker 获取镜像使用的命令为:docker [image] pull NAME[: TAG]

  • pull:docker 的子命令,用来获取仓库中的镜像
  • NAME:镜像的名称
  • TAG:TAG是镜像的标签(往往?来表?版本信息)

例如我们获取一个 Ubuntu18.04 系统的基础镜像,就可以使用命令:

docker pull ubuntu:18.04

如果不指定版本,默认就拉取最新的版本 ubuntu:latest

注:一般来说,镜像的 latest 表示该镜像内容为最新,出于稳定性考虑,不要在生产中使用最新版本的,最好拉取是带上版本号。

使?docker pull命令下载中会获取并输出镜像的各层信息。 当不同的镜像包括相同的层时, 本地仅存储了层的?份内容, 减?了存储空间。

如果我们要从指定的仓库中拉取,可以通过补全镜像的路径实现,例如从网易上拉取 ubuntu18.04,命令如下:

docker pull hub.c.163.com/public/ubuntu:18.04

pull?命令?持的选项主要包括:

  • -a, --all-tags=true|false: 是否获取仓库中的所有镜像, 默认
  • --disable-content-trust: 取消镜像的内容校验, 默认为真

一般在国内,拉取官方的镜像速度,所以我们可以改成默认从国内云服务供应商的仓库上拉取,比如阿里云的。需要修改配置文件如下:

# cat /etc/docker/daemon.json 
{
      "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}

下载了镜像后,我们就可以使用它了:

# docker run -it ubuntu:18.04 bash
root@fe3ce439f6dc:/# echo "Hello World"
Hello World
root@fe3ce439f6dc:/# exit

这是关于 docker 容器部分的知识,这里暂时不做解释。

查看镜像

查看镜像主要使用 docker 的 lstaginspect子命令:

imges 子命令

使用 images 列出所有镜像:

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               a2a15febcdf3        5 days ago          64.2MB
redis               latest              f7302e4ab3a8        5 days ago          98.2MB

我们来说明下输出的信息:

  • REPOSITORY:来?于哪个仓库, ?如ubuntu表?ubuntu系列的基础镜像;
  • TAG:镜像的标签信息, ?如18.04、 latest表?不同的版本信息。 标签只是标记, 并不能标识镜像内容;
  • IMAGE ID:镜像的ID(唯?标识镜像) , 如果两个镜像的ID相同, 说明它们实际上指向了同?个镜像, 只是具有不同标签名称?已;
  • CREATED:创建时间, 说明镜像最后的更新时间;
  • SIZE:镜像??, 优秀的镜像往往体积都较?。

images?命令主要?持如下选项:

  • -a, --all=true|false: 列出所有(包括临时?件) 镜像?件, 默认为否;
  • --digests=true|false: 列出镜像的数字摘要值, 默认为否;
  • -f, --filter=[]: 过滤列出的镜像, 如dangling=true只显?没有被使?的镜像; 也可指定带有特定标注的镜像等;
  • --format="TEMPLATE": 控制输出格式, 如.ID代表ID信息, .Repository代表仓库信息等;
  • --no-trunc=true|false: 对输出结果中太长的部分是否进?截断, 如镜像的ID信息, 默认为是;
  • -q, --quiet=true|false: 仅输出ID信息, 默认为否。

其中, 还?持对输出结果进?控制的选项, 如-f.--filter=[]、 --notrunc=true|false、 -q、 --quiet=true|false等

tag 子命令

通过 tag 子命令可以为镜像添加一个新的标签。

[root@CentOS1 ~]# docker tag ubuntu:18.04 myubuntu:18.04
[root@CentOS1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myubuntu            18.04               a2a15febcdf3        5 days ago          64.2MB
ubuntu              18.04               a2a15febcdf3        5 days ago          64.2MB

如果细节看的话会发现 ubuntu 和 myubuntu 的 IMAGE ID 是一样的,因为 tag 子命令其实是给原来的镜像添加了别名,内部指向同一个文件,所以删除其中的某一个,只是删除一个链接而已,实际的镜像文件依然存在。

inspect 子命令

使用 inspect 子命令来查看镜像的详细信息:docker [image] inspect

docker inspect ubuntu

返回 JSON 格式的消息,如果只要其中一项内容,可以使用 -f 指定:

docker inspect -f {{".Architecture"}} ubuntu

history 子命令

使用 history 子命令查看镜像的历史命令

docker history ubuntu 

输出会被截断,带上--no-trunc选项输出全部信息。

搜寻镜像

使用 search 子命令可以在仓库中搜寻我们需要的镜像,语法为 docker search [option] keyword,?持的命令选项主要包括:

  • -f, --filter filter: 过滤输出内容;
  • --format string: 格式化输出内容;
  • --limit int: 限制输出结果个数, 默认为25个;
  • --no-trunc: 不截断输出结果。

例如我们搜寻名为 nginx 的镜像:

docker search --limit=4 --filter=starts=4 nginx

删除镜像

删除镜像使用 docker rmi 或者 docker images rm,语法为 docker rmi IMAGE[IMAGE...],其中IMAGE可以为标签或ID。?持选项包括:

  • -f, -force: 强制删除镜像, 即使有容器依赖它;
  • -no-prune: 不要清理未带标签的?镜像。
docker rmi myubuntu:latest

当该镜像存在容器时,不能删除镜像,但可以加上 -f 选项强制删除,同时也删除容器。

注:当一个镜像有多个 tag 时,docker rmi 只是删除该镜像的标签,不会影响到镜像文件

清理镜像

使?Docker?段时间后, 系统中可能会遗留?些临时的镜像?件, 以及?些没有被使?的镜像, 可以通过docker image prune命令来进?清理。?持选项包括:

  • -a, -all: 删除所有??镜像, 不光是临时镜像;
  • -filter filter: 只清理符合给定过滤器的镜像;
  • -f, -force: 强制删除镜像, ?不进?提?确认。
# docker image prune -f
Total reclaimed space: 0B

docker 实践一:操作镜像

原文:https://www.cnblogs.com/xingyys/p/11385457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!