Docker 镜像、容器命令 docker删除容器重新运行


怎么把docker里面已经创建的容器删除
Docker是一个为开发人员和系统管理员开发、迁移和运行应用程序的平台 。应用程序通过Docker打包成Docker Image后,可以实现统一的方式来下载、启动、扩展、删除和迁移,这样方便了应用程序的部署和运维 。https://community/docs/DOC-42054Docker采用服务器/客户端模式 。Docker客户端通过和Docker Daemon进行交互来新建、运行或者部署Docker容器 。用户可以将Docker客户端和Docker Daemon安装在同一个系统上,也可以安装在不同的系统上 。Docker客户端通过端口或者RESTful API和Docker Daemon进行通信 。Docker内部由三部分组成:Docker images:Docker image是一个只读模板,用于创建Docker容器 。Image中可以包含Linux操作系统、Apache或者Web应用程序等等,用户可以下载已经创建好的Docker image,也可以创建Docker image给其他用户使用 。每个image是由很多层组成,Docker通过Union File Systems将这些层绑定在一个image中 。每个image都以一个初级image做为基础,然后通过操作指令在这些初级image上添加新层,操作指令可以是运行的命令、添加文件或目录或者创建可用操作环境等 。这些操作指令都被保存在“Dockerfile”文件中 。Docker registries: Docker registries用于保存Docker image,也分公用和私用二种 。公用的Docker registry就是Docker Hub,用户也可以创建私有的Docker registry,为其他用户提供Docker images下载 。Docker containers:类似于保存VMware虚拟机配置文件的目录,它可以为应用程序运行提供一切要素 。Docker Containers可以运行、启动、停止或者被删除,每个container都是隔离的安全应用平台 。
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:
【Docker 镜像、容器命令 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 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」容器Removal In Progress删除方案
有两个闲置的容器在删除时发生错误,处在Removal In Progress状态 。在重启Docker后处于Dead状态 。
删除时提示信息如下:
网上有很多类似的解决办法,但试了几个均不能使用,例如:
最终解决方案:
说明:grep检索的不是容器号,而是删除时提示信息中/mnt/docker/devicemapper/mnt/*** 驱动器号,得到占用该驱动器的进程号 24762(/proc/24762/mountinfo),杀死进程即可
Docker 镜像、容器命令镜像-容器的模板-静态的-打包好的-使用的时候创建容器
du -sh *
[hs@cs007 hs]$ du -sh *
0app
80Kbackup
574Mcentos-ssh-jdk.tar
8.0Kdgw-agent
docker container prune:清理所有停止运行的容器(exited)
docker image prune:清理所有悬挂(<none>)镜像
docker system prune:清理磁盘,删除关闭的容器、无用的数据卷和网络,-a:可以将没有镜像都删掉
docker rmi -f3}') :删除镜像名称或标签为<none>的镜像
docker rmi -f1}'):删除异常停止的docker容器
sync; echo 1 > /proc/sys/vm/drop_caches
Docker卸载过程
对一台已经安装了docker的机器,如果我们要卸载掉他的话,可以通过rpm命令删除掉 。
1)这里用到一台已经装了docker的机器,首先查看一下他的安装情况:
执行rpm -qa | grep docker,可以看到如下信息
2)在删除之前,我们可以通过docker ps命令来看一下有哪些容器处于运行状态,如果有的话通过docker stop 容器ID可用停掉容器,如果以CTRL+P+Q的方式退出容器的话,需要先docker attach 容器ID来先进入容器 。
还可以通过docker rm -f 容器ID命令将容器直接删除掉 。
3)如果没有处于运行状态的容器,可用跳过上一步,直接去删除docker,这里我们分别指向rpm -e来删除这些软件,删除的时候可能提示依赖包错误,我们需要加上--nodeps,如下图:
这里给出一个删除命令的示例作为参考
4)执行完上面的操作后docker,如果还没有卸载完全,需要通过yum remove将相关的包remove掉
yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-selinux
docker-engine-selinux
docker-engine
5)最后去docker相关的一些目录,将该目录强制删除掉
Docker镜像操作常用指令有哪些?docker version:查看docker版本;
docker info:查看docker详细信息;
docker --help:查看docker命令;
镜像命令
docker images:列出本地主机上的镜像,REPOSITORY:表示镜像的仓库源;TAG:镜像的标签;IMAGE
ID:镜像ID;CREATED:镜像创建时间;SIZE :镜像大小,同一个仓库源可以有多个TAG,可以表示仓库源的不同版本,使用REPOSITORY:TAG来定义不同的镜像;
docker images -a:列出本地所有的镜像;
docker images -p:只显示镜像ID;
docker images --digests:显示镜像的摘要信息;
docker images --no-trunc:显示完整的镜像信息;
docker search tomcat:从Docker Hub上查找tomcat镜像;
容器命令
docker run [OPTIONS] IMAGE:根据镜像新建并启动容器,IMAGE是镜像ID或镜像名称;
docker ps:列出当前所有正在运行的容器;
exit:退出并停止容器;
docker start 容器ID或容器名称:启动容器;
docker restart 容器ID或容器名称:重新启动容器;
docker stop 容器ID或容器名称:停止容器;
docker kill 容器ID或容器名称:强制停止容器;
docker rm 容器ID或容器名称:删除容器;
docker rm -f $(docker ps -a -q):删除多个容器 。
关于docker删除容器和docker删除容器重新运行的内容就分享到这儿!更多实用知识经验,尽在 www.hubeilong.com