当前位置: 首页 > news >正文

docker 删除所有未启动的容器_Docker实战006:docker容器使用详解

Docker容器也是docker的核心成员,是docker镜像的一个运行实例。一个镜像可以创建多个容器,多个容器也可以在同一台机器上运行并与其他容器共享操作系统内核同时将应用程序与系统其它周围环境隔离(类似于沙箱)。每个容器在用户空间中作为孤立进程运行,容器内可以独立运行应用程序并配置相关的运行环境(包括文件系统、系统库类、shell环境、系统工具,设置等)。

c091567724b3dfa18f465c694f21dd8d.png

Docker容器创建

docker创建容器可以通过docker create 和 docker run两个命令来实现,区别在于docker create用于创建一个处于静止状态的容器,虽然创建了一个新的容器但不启动它。而docker run 则是在创建容器的同时将其运行起来,相当于 docker create + docker start containerId。容器的创建是基于镜像的,所以我们需要指定基础镜像来创建容器(这个镜像可以是本地的,也可以是远程仓库的)。docker create创建容器的语法格式为:docker create [OPTIONS] IMAGE [COMMAND] [ARG...],具体的Options选项我们可以通过--help来获取。

70d3710d25ca56f7b1b522a5191013fc.png

容器有两种类型分别是交互型容器和后台型容器,交互型容器是通过docker的两个参数 -i -t让docker运行的容器具备"对话"的能力,允许对容器内的标准输入 (STDIN) 进行交互。后台型容器则没有交互式会话并长期运行在后台,适合运行应用程序和服务。创建一个基于Centos7镜像的容器,如果本地不存在该镜像则会自动从Docker Hub上下载。

c5c365a686aa1650ac6e5b17d4a47cf0.png

查看docker容器

我们可以通过命令:docker ps -a 可以查看所有容器(docker ps 列出的是所有正在运行的容器),包括未运行的容易也可以查看到。如果想要获取容器更加详细的信息可以使用docker inspect命令来获取,这个命令会以json字符串的形式返回全部信息,里面以key:value的格式显示了该容器相关的所有信息,也可以通过添加Options选项来返回指定key对应的信息。

3a61ce88deea571c842d371c68220e87.png

启动docker容器

启动容器可以通过命令:docker start containet来启动一个已经停止的容器,这里的container可以是容器ID或者是容器的名称。容器ID支持模糊查询,容器名称则必须输入完整。我们还可以通过指定参数来实现交互或者启动一个bash交互终端,容器启动之后可以通过docker ps来查看正在运行的容器。

a3beb7537f80e357174982acadc9f3cf.png

进入docker容器

启动docker容器之后我们经常需要进入容器操作,进入Docker容器可以通过docker官方命令attach、exec和第三方工具ssh、nsenter来实现。当多个窗口同时docker attach到同一个容器时所有的窗口都会同步地显示,如果其中一个窗口发生阻塞则其它的窗口也会阻塞。docker exec是docker 1.3版本之后提供进入容器的新命令,该命令至少需要提供2个参数方可进入一个已经在运行的容器。使用ssh需要在容器中安装openssh-server服务,启动容器的时候我们可以通过参数-p来为docker中的ssh服务端口映射新的端口,这样我们就可以通过新端口来访问docker容器了。nsenter是个外部工具(需要安装在主机上),通过docker容器的进程ID进入docker容器。

0b3620f581f87b0acb69ac64ac87867c.png

退出docker容器

退出docker容器很简单,只要通过命令:exit (快捷键Ctrl+D)直接快速退出容器,也可以通过组合快捷键:Ctrl+P+Q来退出当前容器。

a8eb90a43b2c299a58cc4eef96ded96f.png

停止docker容器

停止容器可以通过命令:docker stop containet来停止一个已经启动的容器,同样这里的container可以是容器ID或者是容器的名称。容器ID支持模糊查询,容器名称则必须输入完整。

ee259205e73f893f78c7a41977c8e2de.png

删除docker容器

删除docker容器可以通过命令:docker rm container来完成一个或多个容器的删除,这里的container是容器ID(容器ID支持模糊查询)。也可以通过组合命令来实现容器的快速删除,比如docker rm $(docker ps -qf status=exited)中的docker ps -qf status=exited就可以查询所有的容器并过滤出Exited状态的容器, 这样就可以批量删除Exited状态的容器!

06aefd030eb3ce172477380a1c847b40.png

总结:

以上内容是小编给大家分享的【Docker实战006:docker容器使用详解】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
为了方便学习,下面附上本文用到的源码:

# docker create --help# docker create -it centos:7Unable to find image 'centos:7' locally7: Pulling from library/centos75f829a71a1c: Pull complete Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2bStatus: Downloaded newer image for centos:7# docker ps -aCONTAINER ID     IMAGE       COMMAND      CREATED     STATUS       PORTS        NAMESe54e37738c93    centos:7   "/bin/bash" 2 minutes ago  Created                 happy_robinson# docker inspect centos:7# docker start --helpUsage:  docker start [OPTIONS] CONTAINER [CONTAINER...]Start one or more stopped containersOptions:  -a, --attach                  Attach STDOUT/STDERR and forward signals      --checkpoint string       Restore from this checkpoint      --checkpoint-dir string   Use a custom checkpoint storage directory      --detach-keys string      Override the key sequence for detaching a container  -i, --interactive             Attach container's STDIN# docker ps -aCONTAINER ID     IMAGE       COMMAND      CREATED     STATUS       PORTS        NAMESe54e37738c93    centos:7   "/bin/bash" 2 minutes ago  Created                 happy_robinson# docker start e54e54# docker psCONTAINER ID    IMAGE       COMMAND       CREATED       STATUS        PORTS       NAMESe54e37738c93   centos:7   "/bin/bash"  43 minutes ago  Up 15 seconds           happy_robinson[root@localhost ~]# docker attach e54[root@e54e37738c93 /]#    //从docker attach命令进入容器中exit会导致容器停止。-------------------------------------------------------------------[root@localhost ~]# docker exec -it e54e /bin/bash    //至少提供2个参数[root@e54e37738c93 /]#    //从docker exec命令进入容器中exit不会停止容器。-------------------------------------------------------------------[root@e54e37738c93 /]# yum install -y openssh-server[root@localhost ~]# docker run -p 2222:22 centos:7--------------------------------------------------------------------------[root@e54e37738c93 /]# read escape sequence   // 组合快捷键:Ctrl+P+Q[root@localhost ~]# ----------------------------------------------------------------------[root@e54e37738c93 /]# exit                   // 快捷键:Ctrl+D[root@localhost ~]# # docker psCONTAINER ID   IMAGE      COMMAND      CREATED      STATUS       PORTS        NAMESe54e37738c93  centos:7  "/bin/bash"  2 hours ago  Up 52 minutes             happy_robinson# docker stop e54e54# docker psCONTAINER ID   IMAGE      COMMAND      CREATED      STATUS       PORTS        NAMES# docker ps -aCONTAINER ID   IMAGE      COMMAND      CREATED      STATUS       PORTS        NAMESe54e37738c93  centos:7   "/bin/bash" 2 hours ago  Exited (137) 2 minutes ago  happy_robinson# docker stop $(docker ps -q)  // 停用全部运行中的容器# docker rm --helpUsage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]Remove one or more containersOptions:  -f, --force     Force the removal of a running container (uses SIGKILL)  -l, --link      Remove the specified link  -v, --volumes   Remove anonymous volumes associated with the container-----------------------------------------------------------------------------# docker rm e54e37738c93                    // 删除指定ID的容器# docker rm $(docker ps -qf status=exited)  // 删除Exited状态的容器# docker rm $(sudo docker ps -a -q)         // 删除所有未运行的容器 (已经运行的删除不了,未运行会一起被删除)

相关文章:

  • vue.js 拷贝数组和对象_【图文并茂,点赞收藏哦!】重学巩固你的Vuejs知识体系...
  • vs的离线下载.iso文件_VS2015下载地址和安装教程(图解),其他版本均一致
  • python分段函数编程例子_Python绘制分段函数
  • python中break怎么用_Python3中break的用法
  • windows 端口转发工具_iox:一款功能强大的端口转发amp;内网代理工具
  • python语言format用法_python format用法详解
  • python的前端怎么实现_python 前端HTML
  • python读取文件大小_Python如何批量获取文件夹的大小并保存
  • python ocr高精度识别_OCR识别-python版(一)
  • python 全部缩进一行_一步一步学Python3(小学生也适用) 第三篇: Python基本规范
  • win10添加python环境变量_Windows10下安装python(配置环境变量)
  • python运维开发前景_运维开发前景怎么样,怎么去学习运维开发?
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • css 动态rem_我们为什么不使用 CSS 框架
  • 电脑控制苹果手机_用电脑控制手机?
  • 【Leetcode】101. 对称二叉树
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Docker 笔记(2):Dockerfile
  • HTML-表单
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • maven工程打包jar以及java jar命令的classpath使用
  • mysql 数据库四种事务隔离级别
  • PAT A1120
  • PhantomJS 安装
  • Python 反序列化安全问题(二)
  • react-native 安卓真机环境搭建
  • ReactNativeweexDeviceOne对比
  • Redis在Web项目中的应用与实践
  • Sass Day-01
  • 阿里云购买磁盘后挂载
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 推荐一个React的管理后台框架
  • 移动端唤起键盘时取消position:fixed定位
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (一)RocketMQ初步认识
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ******之网络***——物理***
  • .Net多线程总结
  • @Autowired @Resource @Qualifier的区别
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [Android] Upload package to device fails #2720
  • [BJDCTF2020]The mystery of ip
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C++]——带你学习类和对象
  • [CentOs7]图形界面
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)
  • [go 反射] 进阶
  • [HarmonyOS]第一课:从简单的页面开始
  • [hive] posexplode函数