当前位置: 首页 > 后端技术 > Java

【docker专栏5】docker镜像管理命令详解

时间:2023-04-02 01:22:41 Java

1.国内Docker镜像仓库由于众所周知的原因,从国外docker仓库拉取镜像的下载速度其实很慢。国内一些一线厂商和docker官方已经在国内免费提供了一些docker镜像仓库,使用国内镜像仓库下载速度会大大提升。例如:Docker官方提供的中文registry镜像阿里云加速器DaoCloudAccelerator下面以Docker官方提供的中文registry镜像为例,说明国内镜像仓库源的配置方法。修改/etc/docker/daemon.json文件内容为如下内容。如果文件不存在,新建一个{"registry-mirrors":["https://registry.docker-cn.com"]}配置完成后,重启docker服务sudosystemctlrestartdocker然后下载拉取镜像,你会发现比以前快多了。就这么简单!3.寻找镜像DockerHub上有很多官方镜像和第三方上传的高质量镜像。下面将介绍如何搜索和获取这些镜像。第一种方式是直接在Dockerhub上搜索镜像。比如我搜索redis镜像,下面的绿色盾牌标识就是redis官方提供的镜像,安全稳定有保障。第二种方式是使用dockersearch来搜索镜像,我们也可以使用命令来搜索镜像。例如,我们需要一个tomcat镜像作为我们的web服务。我们可以使用dockersearch命令来搜索tomcat,为我们找到合适的镜像。dockersearchredisOFFICIAL字段值为OK的记录为官方镜像。4、拉取镜像从Docker镜像仓库获取镜像的命令是dockerpull。命令格式为:dockerpull[option][DockerRegisteyaddress[:portnumber]/]imagename[:label]具体options可以通过dockerpull获取查看--help命令,这里说一下格式图像名称。Docker镜像仓库地址:地址格式一般为<域名/IP>[:端口号]。如果使用默认的镜像仓库,则不需要写仓库地址,如本文第一节中的配置。镜像名称:镜像名称包含<用户名>/<软件名>两部分。一般来说,官方软件提供的图片一般是没有用户名的。示例:通过dockerpull获取最新版本的redis镜像dockerpullredis:latest相当于dockerpullredis5.列出镜像列出已经下载的镜像,可以使用dockerimagels命令。dockerimages//等同于dockerimagelsREPOSITORY:仓库和镜像名称TAG:标签和版本号IMAGEID:镜像ID,镜像的唯一标识CREATED:镜像的构建时间SIZE:镜像文件的大小在列表中,可能存在既没有仓库名/镜像名,也没有标签/版本号的特殊镜像,两处都显示。这种图像通常称为虚像,如下图所示。虚挂镜是什么原因造成的?其实旭轩镜像在第一次拉取下载的时候,是有镜像名称和标签版本号的。比如redis官方发布了一个6.0.0版本的docker镜像。一段时间后,发现6.0版本的镜像可能存在安全问题,于是重新构建。6.0版图像。6.0的镜像名redis和TAG都被新发布的镜像占用,老版本的镜像名和tag丢失,成为dummyimage。一般来说,虚像已经失去了价值,可以随意删除。使用如下命令删除:dockerimageprune七、删除本地镜像下面两个语法可以完成镜像删除操作:dockerrmi[option][.....]dockerimagerm[.....]在上面的语法中,可以使用镜像ID和镜像名称作为镜像的唯一标识,用于删除镜像。常用的[option]是-f表示强制删除。有时同一张图片会上传到多个仓库。这时候图片ID就不再是唯一标识了。需要使用-f强制删除才能删除镜像(具有相同镜像ID的本地镜像全部删除)。需要注意的是,在删除镜像之前,必须确认被删除的镜像没有被任何容器使用,否则无法删除。如下图,删除hello-world图片的响应结果。#dockerrmihello-worldUntagged:hello-world:latestUntagged:hello-world@sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38Deleted:sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412Deleted:sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359八、镜像的导入导出用save子命令将本地仓库的镜像保存为当前目录下的tar文档。dockersave-o.tar比如下面的命令将hello-world镜像导出为一个helloworld.tar存放在当前目录dockersave-ohelloworld.tarhello-world我们可以在另一个在服务器上,导入hello-world图像。导入方法如下:导入方法一(不输出详细信息):#dockerload-ihelloworld.tar导入方法二(输出详细信息):#dockerload