Docker中如何删除image(镜像)

原文地址:http://yaxin-cn.github.io/Docker/how-to-delete-a-docker-image.html

docker中删除images的命令是docker rmi,但有时候执行此命令并不能删除images

[[email protected] ~]$docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
eg_sshd             latest              ed9c93747fe1        45 hours ago        329.8 MB
CentOS65            latest              e55a74a32125        2 days ago          360.6 MB
[[email protected] ~]$docker rmi ed9c93747fe1
Untagged: ed9c93747fe16627be822ad3f7feeb8b4468200e5357877d3046aa83cc44c6af
[[email protected] ~]$docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              ed9c93747fe1        45 hours ago        329.8 MB
CentOS65            latest              e55a74a32125        2 days ago          360.6 MB

可以看出,image并没有被删除,只是他的tag被删除了,再次执行docker rmi IMAGE_ID只会报错

[[email protected] ~]$docker rmi ed9c93747fe1
Error: image_delete: Conflict, ed9c93747fe1 wasn‘t deleted
2014/03/22 15:58:27 Error: failed to remove one or more images

查看docker的帮助会发现有两个与删除有关的命令rm和rmi

rm Remove one or more containers
rmi Remove one or more images

这里有两个不同的单词,images和container。其中images很好理解,跟平常使用的虚拟机的镜像一个意思,相当于一个模版,而container则是images运行时的的状态。docker对于运行过的image都保留一个状态(container),可以使用命令docker ps来查看正在运行的container,对于已经退出的container,则可以使用docker ps -a来查看。 如果你退出了一个container而忘记保存其中的数据,你可以使用docker ps -a来找到对应的运行过的container使用docker commit命令将其保存为image然后运行。

回到之前的问题,由于image被某个container引用(拿来运行),如果不将这个引用的container销毁(删除),那image肯定是不能被删除。

所以想要删除运行过的images必须首先删除它的container。继续来看刚才的例子,

[[email protected] ~]$docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                   NAMES
117843ade696        ed9c93747fe1        /bin/sh -c /usr/sbin   46 hours ago        Up 46 hours         0.0.0.0:49153->22/tcp   test_sshd

可以看出ed9c93747fe1的image被117843ade696的container使用着,所以必须首先删除该container

[[email protected] ~]$docker rm 117843ade696
Error: container_delete: Impossible to remove a running container, please stop it first
2014/03/22 16:36:44 Error: failed to remove one or more containers

出现错误,这是因为该container正在运行中(运行docker ps查看),先将其关闭

[[email protected] ~]$docker stop 117843ade696
117843ade696
[[email protected] ~]$docker rm 117843ade696
117843ade696
[[email protected] ~]$docker rmi ed9c93747fe1
Deleted: ed9c93747fe16627be822ad3f7feeb8b4468200e5357877d3046aa83cc44c6af
Deleted: c8a0c19429daf73074040a14e527ad5734e70363c644f18c6815388b63eedc9b
Deleted: 95dba4c468f0e53e5f1e5d76b8581d6740aab9f59141f783f8e263ccd7cf2a8e
Deleted: c25dc743e40af6858c34375d450851bd606a70ace5d04e231a7fcc6d2ea23cc1
Deleted: 20562f5714a5ce764845119399ef75e652e23135cd5c54265ff8218b61ccbd33
Deleted: c8af1dc23af7a7aea0c25ba9b28bdee68caa8866f056e4f2aa2a5fa1bcb12693
Deleted: 38fdb2c5432e08ec6121f8dbb17e1fde17d5db4c1f149a9b702785dbf7b0f3be
Deleted: 79ca14274c80ac1df1333b89b2a41c0e0e3b91cd1b267b31bef852ceab3b2044
[[email protected] ~]$docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
CentOS65            latest              e55a74a32125        2 days ago          360.6 MB

可以看出,image已经被删除。

原文地址:https://www.cnblogs.com/bigben0123/p/8890938.html

时间: 2024-10-30 17:57:03

Docker中如何删除image(镜像)的相关文章

Docker中通过模板创建镜像,Docker容器、仓库及数据管理

1.通过模板创建镜像 (1)首先去下载一个模板 http://openvz.org/Download/templates/precreated //下载速度不快,阿铭下载了一个centos6的模板centos-6-x86-minimal.tar.gz (2)导入该镜像的命令为: cat centos-6-x86-minimal.tar.gz|docker import - centos6 (3)查看导入的镜像 docker images (4)导出镜像: 把现有镜像,导出为一个文件: docke

Docker中使用163 Hub 镜像下载加速(Centos 6)

在学习Docker的过程中,下载镜像速度特别慢,这是因为Docker Hub并没有在国内部署服务器或者CDN,再加上国内的网速慢等原因,镜像下载就十分耗时.为了克服跨洋网络延迟,能够快速高效地下载Docker镜像,最为有效的方式之一就是:使用 国内的Docker镜像源.下面就介绍一下使用163  镜像源来加速的办法. 添加镜像源: vim /etc/sysconfig/docker 添加如下内容: other_args="--registry-mirror=http://hub-mirror.c

docker常用常用删除操作

文章参考 https://blog.csdn.net/superdangbo/article/details/78688904 https://www.cnblogs.com/jackadam/p/8567846.html $docker stop $(docker ps -a -q) // stop停止所有容器 $docker rm $(docker ps -a -q) // remove删除所有容器 $docker rm $(docker ps -a -q)删除所有已经停止的容器 $dock

阿里云部署Docker(6)----解决删除&lt;none&gt;镜像问题

转载请注明来源,本博客原创作者为:http://blog.csdn.net/minimicall?viewmode=contents 在Docker使用中,经常会碰到删除镜像不成功,反而让镜像变成了<none > <none>即,没名字,没Tag的镜像. [email protected]:/var/run# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE <none> <none> de

[转]Docker中的镜像

引言 这篇文章中我们主要来探讨下Docker镜像,它是用来启动容器的构建基石,本文的所用到的Dcoker版本是17.1,API版本是1.33,Go的版本是1.9.2,OS是基于Arch Linux的Manjaro. Docker镜像的概念 总的来说,Docker镜像是由文件系统叠加而成的. bootfs 最底端是一个引导文件系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导文件系统有什么交互.实际上,当一个容器启动后,它将会被移到内存中,而引

Docker中的三个基本概念容器(container)、镜像(image)和仓库(registry)

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷.环境变量.用户等). 镜像不包含任何动态数据,其内容在构建之后也不会被改变.Docker 设计时,就充分利用 Union FS的技术,将其设计为 分层存储的架构 .镜像实际是由多层文件系统联合组成.镜像构建时,会一层层构建,前一层是后一层的基础.每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层.比如,删除前一层文件的操作,实际不是真的删

Docker(二)——常用命令(镜像相关命令,容器相关命令:启动,拷贝,目录挂载,删除等等)

上一篇文章写的是Docker的安装和启动,启动了Docker我们可以进行镜像的安装了,镜像就是包含各种应用的操作系统. 一.镜像相关命令 1.搜索镜像 命令行的方式: docker search python #搜索关于python的镜像 在网站搜索: https://hub.docker.com/ #一般在网站上搜索方便看,搜索好之后再安装 搜索关于带python的Docker  2.下载镜像 docker pull centos:centos7.7.1908 #指定下载centos7.7.1

docker学习笔记5:利用commit命令创建镜像 和 删除本地镜像

一.概述 创建镜像有两种方法,一是用commit命令,二是用dockerfile方法(这个更常用,在下面文章介绍).本章介绍commit方法. 在介绍commit命令前,我们先回顾下对代码的版本控制,当修改代码后,我们会commit变更到版本服务器上. 对于容器类似的概念,当创建容器后,如果后面对容器做了修改,就可以利用commit命令将修改提交为一个新的镜像. 二.例子说明 下面我们通过具体的例子来说明: 1.创建新容器 docker run --name newcontent -i -t u

docker中如何制作自己的基础镜像

一.本地镜像 举个例子:现在把自己的开发环境打包,取名为centos6-base.tar,然后在docker中,以centos6-base.tar作为基准镜像. 1.创建自己的镜像,放置于/root目录下: #tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos6-base.tar / 需要注意的是,文件打包支持的类型只有(.tar, .tar.gz, .tgz, .bzip, .tar.xz, or .txz)这几种. 2