docker删除所有镜像(docker删除镜像的方法)
本篇文章给大家谈谈docker删除所有镜像,以及docker删除镜像的方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
docker私有镜像仓库搭建和镜像删除
docker私有镜像仓库一般用来存放公司内部的镜像,比如微服务中会有很多的服务需要放到自己公司内部的镜像仓库上,发布的时候直接从私有镜像仓库拉取。比如我公司的微服务部署在k8s环境上,微服务技术依然选择熟悉的 Spring Cloud ,这样每一个服务其实就是一个 Spring Boot 项目,我们通过Maven的插件会在项目编译、打包之后推送到我们的私有镜像仓库,之后CI工具使用kubelet部署的时候会从私有镜像仓库拉取镜像,最后完成部署,可以说私有镜像仓库是非常重要的一个环节。
接下来我会主要讲述一下私有镜像仓库的搭建以及镜像的管理,包括一些自己遇到的问题。
首先要保证自己的服务器已经安装了 docker 。具体的安装教程可以看 官网 ,这里就不在赘述了。
首先我们需要创建一个自己的CA证书,
比如下图是我自己创建时输入的相关内容:
做好镜像存储目录和证书目录的挂载,运行即可
这一步需要在所有需要拉取镜像的服务器上执行。上月底我在部署正式环境时我就遇到了这个问题,k8s的节点上一直显示拉取镜像失败,后来才发现忘了在k8s服务器上配置证书。
hostname 即生成CA证书的时候最后输入的 hostname , port 镜像仓库对外暴露的端口号。
如果是在镜像仓库所在的服务器上,执行:
如果不是同一台服务器,同样需要存放创建证书目录,执行:
之后将证书上传到目标服务器,且放在证书目录下,名称为 ca.crt 。
为了测试,我拉取一个 redis 镜像,然后给它重新打一个 tag 。
推送到私有镜像仓库:
浏览器显示:
表示刚才推送到私有镜像仓库是成功的。接下来我们测试从另一台服务器拉取刚才的镜像。当然这台服务器一定要按照之前的描述配置好CA证书,还要修改服务器 hosts 文件,配置好 ip 和 hostname 。
拉取镜像:
拉取镜像如下图所示:
根据显示可以看出拉取镜像是成功的。
到这里镜像仓库的歼咐搭建、推送和拉取都讲完了,接下来就看看怎么删除镜像。
这里说的删除镜像是指从仓库中删除,即从服务器上删除。在构建仓库的时候我们将镜像的仓库容器内的目录挂载到了服务器的目录。镜像仓库内其实是没有镜像文件,都在服务器对应的目录下。在开发的时候我就遇到过这样一个问题,因为是开发环境项目编译、打包、镜像构建和推送都非常频繁,虽然新的蔽改闭镜像会覆盖老的镜像,但是原有的镜像文件本身并没有被覆盖,这样的结果就是虽然镜像仓库上看镜像只有一个,但是本地服务上存储的是很多个镜像文件(而且基本是没啥用的),最终导致了服务磁盘空间不足的情况。
我们依然以 Redis 举例,我将多不同版本的 Redis 多次像私有仓库推送,不管是 Redis 4.0、5.0、6.0,最终我向仓库推送的版本号都是 redis:v4 (过程省略),最终我们在镜像仓库目录( /home/registry/ )下可以看到有多个 sha256 的值,详细目录:
/home/registry/docker/registry/v2/repositories/redis/_manifests/revisions/sha256
如下图:
如果要删除镜像首先需要修改配置文件,进入到docker容器内:
保存之后退出容器。
我们进入到存放镜像的目录下,删除一个镜像的 sha256 的值
上面只是删除了镜像的 sha256 值,并没有删除镜像本身,我们需要调用垃圾回收的命令:
这时候会看到一些输出,比如:
这时候我们在查看下对应目录的磁盘使用情况:
但是变化不明显,那就在删除一个宏裂试试。
除了手动删除之外还可以通过API来删除,这个方法我没有测试,感兴趣的小伙伴可以测试一下。在实际过程中我也是使用上述方法删除的,因为我一般都是磁盘使用率到一定比例才进行批量删除的,另外网上也有人通过脚本,感兴趣的小伙伴都可以尝试一下。
删除可以使用使用官方API删除:
查询镜像的 sha256 的值:
今天关于docker私有镜像仓库的内容就讲到这里,如果对上面内容有什么疑问欢迎大家交流探讨,也欢迎大家多多点赞、分享、转发,谢谢大家~~~
[img]Docker 占用资源膨胀那么快,你知道怎么清理?
如果经常使用 docker,你会发现 docker 占用的资源膨胀很快,其中最明显也最容易被察觉的应该是对磁盘空间的占用。本文将介绍如何快速的清理 docker 占用的系统资源,具体点说就是删除那些无用的 镜像、容器、网络和数据卷。
在进行资源清理之前我们有必要搞清楚 docker 都占用了哪些系统的资源。这需要综合使用不同的命令来完成。
docker container ls :默认只列出正在运行的容器,-a 选项会列出包括停止的所有容器。
docker image ls :列出镜像信息,-a 选项会列出 intermediate 镜像(就是其它镜像依赖的层)。
docker volume ls :列出数据卷。
docker network ls :列出 network。
docker info :显示系统级别的信息,比如容器和镜像的数量等。
通过这些命令查看 docker 使用的资源情况后,相信你已经决定要清理 docker 占用的一些资源了!让我们先猛如从那些未被使用的资源开始。
Docker 提供了方便的 docker system prune 命令来删除那些已停止的容器、dangling 镜像、未被容器引用的 network 和构建过程中的 cache:
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"$ docker system prune/pre
安全起见,这个命令默认不会删除那些未被任何容器引用的数据卷枝茄启,如果需要同时删除这些数据卷,你需要显式的指定 --volumns 参数。比如你可能想要执行下面的命令:
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"$ docker system prune --all --force --volumns/pre
这次不仅会删除数据卷,而且连确认的过程都没有了纳码!注意,使用 --all 参数后会删除所有未被引用的镜像而不仅仅是 dangling 镜像。
这里有必要解释一下何为 dangling images,其实可以简单的理解为未被任何镜像引用的镜像。比如在你重新构建了镜像后,那些之前构建的且不再被引用的镜像层就变成了 dangling images:
在本地的镜像更新之后,就会出现类似图中红框内的 none 镜像。这表示旧的镜像已经不再被引用了,此时它们就变成了 dangling images。如果使用 -a 参数,你还会发现另外一种类型的 none 镜像,它们的 repository 和 tag 列都表现为 none:
这些镜像被称为 intermediate 镜像(就是其它镜像依赖的层)。
我们还可在不同在子命令下执行 prune,这样删除的就是某类资源:
docker container prune # 删除所有退出状态的容器
docker volume prune # 删除未被使用的数据卷
docker image prune # 删除 dangling 或所有未被使用的镜像
这里的 "安装时的状态" 指资源占用情况而不是 docker 的相关配置。这也是一种比较常见的用例,比如笔者就需要在一个干净的 docker 环境中自动化的还原出某天的一个生产环境(使用生产环境的备份数据)用于 bug 调查。让我们一起来看看都需要做些什么?
回想我们前面介绍的 docker system prune --all --force --volumns 命令,如果在执行这个命令前系统中所有的容器都已停止,那么这个命令就会移除所有的资源!好,现在让我们想办法停掉系统中的所有容器。
docker container stop 命令可以停止一个或多个容器,我们只需要把系统中所有在运行的容器罗列出来就可以了。由于 docker 并不介意我们再次停止一个已经停止了的容器,干脆简单粗暴点,直接列出所有的容器(包括已经停止的)!
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"$ docker container ls -a -q/pre
-a 显示所有的容器,-q 只显示数字形式的容器 ID。
然后把这里命令执行的结果作为 docker container stop 命令的参数:
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;" (docker container ls -a -q)/pre
完整的恢复 docker 环境的命令如下:
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;" (docker container ls -a -q) docker system prune --all --force --volumns/pre
和前面的 prune 命令类似,也可以完全删除某一类资源:
删除容器 :docker container rm (docker image ls -a -q)
删除数据卷 :docker volume rm (docker network ls -q)
上面的命令可以完成任务但是却很繁琐,我们可以通过 shell 的别名功能来简化这些命令的执行。
pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"alias docker-clean-unused='docker system prune --all --force --volumes' alias docker-clean-all='docker stop $(docker container ls -a -q) docker system prune --all --force --volumes'/pre
把上面的命令写入到用户的 ~/.bashrc 文件中就可以了!
执行一次清理任务:
经常清理系统资源不仅能够让系统运行的更流畅,也利于我们把精力集中在相关的重点资源上面。所以建议大家能够使用相关的资源清理命令,让 docker 保持清爽和高效。
参考:
Clean out your Docker images, containers and volumes with single commands
Python 零基础入门课程
此课程为面授班和网络班,一共 15 个课时,每周上一个全天,历时4个月。附加:录播视频+笔记+答疑2019-6月份开课
Python 自动化运维进阶课程
此课程为面授班和网络班,一共 15 个课时,每周上一个全天,历时4个月。附加:录播视频+笔记+答疑2019-4月份开课
Docker+K8s 课程
此课程为网络班,一共 150个课时,每周上一个全天,历时4个月。附加:录播视频+笔记+答疑现已开课
现在报名即可享受早鸟价
golang 课程
早报名可享受早鸟价
想要详细了解和报名的同学可以扫码添加好友私聊
卸载docker
如何卸载docker,让我们一起了解一下?
一、准备工作:
1、杀死docker有关的容器
2、删除所有docker容器
3、删除所有docker镜像
4、停止厅拿 docker 服务
5、删除docker相关存储目录
6、如果删除不掉,则先umount
7、然后再重新执行上面那步“删除docker相关存储目录”
二、卸载工作
经过上面一系列准备后,我们终于到了最后环节,开始删除docker。
1、查伍袭看系统已经安装了哪些docker包
2、接着会出现选扮橘搭择提示,直接输入“y”然后回车就可以
3、再次查看,不再出现相关信息,证明删除成功
4、再看看docker命令
关于docker删除所有镜像和docker删除镜像的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。