怎样删除自建的docker-registry中的image

怎样删除自建的docker-registry中的image,第1张

如果你的docker-registry是在container中,那么是无法使用命令删除image的,只能手动直接删除image文件。如果不是,那么可以使用docker rmi 镜像名 来进行删除

如果你的docker-registry是在container中,那么是无法使用命令删除image的,只能手动直接删除image文件。如果不是,那么可以使用docker rmi 镜像名 来进行删除

docker rmi mirror_name 删除镜像
docker rm container_name/container_id 删除容器
docker volume rm volume_name 删除持久卷

docker
images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法:
1进入root权限
sudo
su
2停止所有的container,这样才能够删除其中的images:
docker
stop
$(docker
ps
-a
-q)
如果想要删除所有container的话再加一个指令:
docker
rm
$(docker
ps
-a
-q)
3查看当前有些什么images
docker
images
4删除images,通过image的id来指定删除谁
docker
rmi
想要删除untagged
images,也就是那些id为
的image的话可以用
docker
rmi
$(docker
images
|
grep
"^
"
|
awk
"{print
$3}")
要删除全部image的话
docker
rmi
$(docker
images
-q)

docker会产生一些垃圾,有哪些垃圾,1镜像垃圾,容器垃圾,其它缓存垃圾,数据卷垃圾,构建缓存垃圾

清除docker镜像缓存
为什么就一个命令也要单开一个博客记录
因为坑死我了,打了一早上镜像一直有问题,搞到最后是缓存的锅
佛了!

命令
docker system prune --volumes
1
该命令清除:

所有停止的容器
所有不被任何一个容器使用的网络
所有不被任何一个容器使用的volume
所有无实例的镜像

可以通过将-a选项传递给docker container ls命令来获得所有活动容器和非活动容器的列表:
docker container ls -a

知道要删除的容器的CONTAINER ID后,请将其传递给docker container rm命令。例如,要删除上面输出中列出的前两个容器,请运行:
docker container rm cc3f2ff51cab cd20b396a061
docker rm cc3f2ff51cab cd20b396a061

停止容器
docker container stop cc3f2ff51cab

删除所有已停止的容器
docker container prune

查看docker的镜像
docker image ls

删除docker镜像
注意:要删除图像,必须先删除对应的容器。
docker image rm 75835a67d134 2a4cca5ac898
docker rmi 75835a67d134 2a4cca5ac898

实际上,当同一个镜像拥有多个标签时,执行 docker rmi 命令,只是会删除了该镜像众多标签中指定的标签,并不会影响原始的那个镜像文件。如果某个镜像不存在多个标签,当且仅当只有一个标签时,执行删除命令时,这会彻底删除镜像

在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:
docker image prune -a

查看docker卷
docker volume ls

删除docker卷
docker volume rm 4e12af8913af

删除所有未使用的卷
docker volume prune

docker system是用于管理磁盘空间的命令,docker system df,类似于df命令,专门用来查看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 课程

早报名可享受早鸟价
想要详细了解和报名的同学可以扫码添加好友私聊

应该是先删除容器,然后才能删除镜像。

查看所有容器

[root@node1 ~]# docker ps -a 

删除容器

删除容器我们可以使用docker rm命令,被删除的容器需要是终止状态的docker命令

[root@node1 ~]# docker stop 容器ID

[root@node1 ~]# docker rm 容器ID

删除镜像

[root@node1 ~]#  docker rmi 容器ID


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12878279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存