您现在的位置是:首页 > 行业发展
Docker实战005:docker镜像使用详解
智慧创新站
2025-04-02【行业发展】246人已围观
简介Docker镜像是docker的核心成员,类似于虚拟机镜像的文件系统(一个镜像往往由多层文件系统组成,相当于一个精简的操作系统同时还包含应用运行所必须的文件和依赖包。),用来提供容器运行时所需的程序、库、资源、配置等资源。Docker镜像是基于Dockerfile文件构建的,Dockerfile文件...
Docker镜像是docker的核心成员,类似于虚拟机镜像的文件系统(一个镜像往往由多层文件系统组成,相当于一个精简的操作系统同时还包含应用运行所必须的文件和依赖包。),用来提供容器运行时所需的程序、库、资源、配置等资源。Docker镜像是基于Dockerfile文件构建的,Dockerfile文件内包含了一条条构建镜像所需的指令和说明。Dockerbuild会读取定制的Dockerfile并通过Docker服务器创建镜像。Docker镜像是一个只读的模板,镜像内不包含任何动态数据即使构建之后也不会被改变。用户可以从DockerHub获取已有镜像,也可以利用本地文件系统创建镜像。

镜像是Docker运行容器的前提,有了Docker镜像才可以创建Docker容器,一个镜像支持创建多个容器。Docker官方提供了一个公共仓库:https:/并提供了数万个镜像供用户下载,基本可以满足大部分用户的镜像需求。Docker安装之后本地并没有镜像,镜像需要从远程镜像仓库服务中下载。docker提供了拉取命令:dockerpull[options]origin/repository:tag,该命令表示从origin远程仓库(默认DockerHub)中的repository仓库拉取标签为tag的镜像(如果省略标签则拉取标签为latest的镜像)。当然我们也可以从其他的注册中心拉取镜像,但是输入注册中心的URL时前面不需要加http://或https://。
查看docker镜像docker镜像是一个文件系统(它没有状态也不会被改变),镜像可以启动复杂的软件供用户使用。通过命令:dockerimages或者dockerimagels可以列出本机已有的镜像,REPOSITORY资源仓库名,TAG指镜像的标签信息(即版本信息),IMAGEID:是镜像的ID(唯一的),CREATED:指镜像最后的更新时间,SIZE:指镜像的大小。如果还想更精确地查看docker镜像可以添加filter进行过滤,过滤属性有dangling、before、since、lable、reference。如果需要查看docker镜像的详细信息可以使用命令:dockerinspectubuntu:12.04实现,查看镜像历史可以通过命令:dockerhistoryubuntu:12.04实现。
搜索docker镜像当我们下载镜像时通常需要先知道仓库是否存在该镜像,特别是指定标签下载时我们需要先查看下该镜像有哪些版本。此时我们可以通过docker提供的search命令来查询DockerHub官方仓库中的镜像,命令格式为:dockersearch[options]keyword。输出内容包括镜像名称、镜像描述、收藏数、是否官方创建、是否自动创建等信息,默认输出的结果按收藏数进行排序。
删除docker镜像删除之前要确认此镜像是否被容器使用,如果存在正在运行的docker容器则需要先删除对应的docker容器。因为该镜像被容器引用,所以会导致镜像删除失败。或者当同一个镜像拥有多个标签时,执行删除命令时只是删除了该镜像指定的标签并不会影响原始的那个镜像文件。我们先通过命令先删除引用这个镜像的容器:dockerrmcontainerId(containerId是容器的ID,可以通过dockerps-a来查看到包括未运行的所有容器id),然后再来执行删除镜像的命令:dockerrmiimageId/repository(imageId是镜像的ID,可以通过dockerimages来查看所有镜像id)。
清理docker镜像Docker使用一段时间后系统会残存一些临时的或者未被使用的镜像文件(比如部署升级),随着时间的推移主机中的镜像文件会越来越多。但是其中有很多临时的、未被使用的镜像会占用了大量的存储空间,此时就需要定期清理没有价值的镜像以保证系统的良好运行。通常主机中有使用中的镜像、历史版本镜像、基础镜像和dangling镜像,其中dangling镜像和历史版本镜像是不需要的镜像文件,会占用了一定的存储空间需要及时清理。dangling镜像是由于同一个tag多次构建内容不同的镜像时由dockerbuild或dockerpull命令生成的,该镜像不具有名称也没有作用,一般在dockeriamges查看镜像中显示none:none。docker提供了专门清理dangling镜像的命令:dockerimageprune[options],想要清除所有没有容器引用的镜像增加一个参数-a,想要强制删除则添加参数-f。
总结:运行容器时如果使用的镜像本地不存在会自动从官方DockerHub镜像源仓库中下载,我们也可以自己制作镜像供他人下载。以上内容是小编给大家分享的【Docker实战005:docker镜像使用详解】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码:
//从注册服务器中的ubuntu仓库下载标记为12.04的镜像。$/ubuntu:12.04Options:忽略镜像校验,默认项--disable-content-trustSkipimageverification(defaulttrue)---------------------------------------------------------------------------------[dangling|before|since|lable|reference]------------------------------------------------------------------------//dangling:值为true时返回没有标签的镜像,值为false时返回有标签的镜像。//before:需要镜像名或镜像ID作为参数,返回之前创建的全部镜像。//since:同样需要镜像名或镜像ID作为参数,返回之后创建的全部镜像。//lable:根据标注的名称或值过滤镜像。//reference:根据repository和tag搜索相关镜像$dockersearchubuntuOptions:-f,--filter过滤输出的内容--formatstring格式化输出内容--limitint限制输出结果个数--no-trunc不截断输出结果------------------------------------------------------dockerrunubuntu:12.04dockerrm1ec7b98eaf2e1:-a,--all删除所有没有用的镜像,而不仅仅是临时文件-f,--force强制删除镜像文件,无需弹出提示确认----------------------------------------------------dockerrmi$(dockeriamges-fdangling=true-q)Totalreclaimedspace:100MB
很赞哦!(95)