Docker入门(三)

简介: 上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解

容器内部进程

除了容器的日志,我们也可以查看容器内部运行的进程,为了做到这一点,我们使用docker top命令

62.png

执行命令后,我们看到容器内的所有进程,运行进程的用户,时间,执行指令

容器内部运行进程

在 Docker 1.3 之后,我们可以通过 docker exec 命令在容器内部额外启动新进程。可以在容器内部运行的进程有两种类型:后台任务和交互式任务。后台任务在容器内部运行并且没有交互需求,而交互式任务保持在前台运行。对于需要在容器内部打开的 shell 任务,交互式任务还是很实用的,下面是一个后台任务的例子

63.png


这里的标志 -d 表示是一个后台进程。-d 标志之后,跟的是要在内部创建进程的名字以及要执行的命令,上面的例子会在daemon_dave 之后创建了一个新文件,文件名为/etc/new_configP_file ,通过 docker exec 后台命令,我们可以在正在运行的容器中进行维护、监控以及任务管理。

我们也可以在容器内部打开一个交互式任务,如下

64.png


因此你也可以很直观的看出交互式任务后台任务之间的区别:交互式任务可以进行运行环境的切换,而后台任务一旦运行无法切换,只能进行停止或者开始

上面的-t-i 标志为我们的执行创建了 TTY 并捕捉 STDIN。接着我们指定了要在容器内部运行的名称以及要执行的命令,在上面的例子中,这条命令会在 daemon_dave 容器中创建一个新的 bash 会话,有了这个会话,我们就可以在该容器中运行其他命令了。

tty(终端设备的统称):在UNIX系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2等。这些文件赋予了linux同时处理多任务,多窗口切换的能力。

STDIN是标准输入,一般指键盘输入到缓冲区里的东西。

其他还有

stdout(Standardoutput)标准输出

stderr(Standarderror)标准错误

停止守护式进程

要停止守护式进程,需要执行 docker stop命令,例如65.png


也可以停止指定的 containerId,例如

66.png


Docker stop 命令会像 Docker 容器进程发送 SIGTERM 信号,如果你想快速停止某个容器,也可以使用 docker kill 命令来向进程发送 SIGKILL 信号。

可以使用 docker ps来查看正在运行中的 docker 容器,还有一个很实用的命令 docker ps -n x,该命令会显示最后 x 个容器,不论这些容器是正在运行还是已经停止。

67.jpg


自动重启容器

由于某种错误而导致容器停止运行,可以使用 --restart 命令来重启容器。--restart 会检查容器的退出代码,并据此来决定是否要重启容器。默认的行为是 Docker 不会重启容器。

docker run --restart=always --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done"

--restart 标志被设置为 always。无论容器的退出代码是什么,Docker 都会自动重启该容器。除了 always,我们可以将这个标志设置为 on-failure,这样,只有当容器的退出代码为非0 的时候,才会自动重启。另外,on-failure 还接受一个可选的重启次数,如 : --restart=on-failure:5

深入容器

除了使用 docker ps 命令获取正在运行的容器信息,还可以使用 docker inspect 来获取更多的容器信息


668.jpg


下面还有很多信息

我们还可以使用 -f 或者 --format 标志选定查看结果。

删除容器

如果容器已经不在使用,可以使用 docker rm来删除,如下

68.png


目前,还没有办法删除所有的容器,不过可以通过下面的小技巧来删除所有的容器

69.jpg

注意:正在运行的docker 容器是无法删除的,你必须先停止容器的运行,使用 docker stop 或者 docker kill 停止容器,然后才可以删除。

总结

本能文章作为Docker 的入门,主要包括Docker对容器的一些基本用法:

  • 查看Docker 基本信息
  • 如何运行一个容器
  • 给容器命名
  • 重启启动容器
  • 附着容器
  • 创建守护式容器
  • 容器日志
  • 容器内部运行容器
  • 容器停止
  • 自动重启容器
  • 容器删除

下一篇文章我们会介绍使用 Docker 镜像和仓库

            </div>
目录
相关文章
成功解决matplotlib.units.ConversionError: Failed to convert value(s) to axis units: ‘LiR‘
成功解决matplotlib.units.ConversionError: Failed to convert value(s) to axis units: ‘LiR‘
|
11月前
|
人工智能 自然语言处理 搜索推荐
《人工智能在鸿蒙元宇宙中的应用:数字鸿沟的加剧还是弥合》
在科技飞速发展的当下,鸿蒙元宇宙与人工智能的融合成为热门话题。这一融合带来诸多机遇和创新,但也引发对数字鸿沟加剧的担忧。技术与设备门槛、数字素养差距及数据隐私问题可能导致经济条件较差地区的人们难以享受先进体验,从而拉大数字鸿沟。然而,通过增加教育与培训机会、普及个性化体验以及促进经济发展与就业,可以有效弥合这一差距。政府、企业和教育机构应共同努力,确保技术发展造福更广泛人群,实现数字世界的公平与包容。
280 16
|
9月前
|
机器学习/深度学习 数据采集 人工智能
DeepSeek R1 最新全面综述:R1 为什么能让 LLM 像人一样思考?
DeepSeek R1 最新全面综述:R1 为什么能让 LLM 像人一样思考?
407 0
|
NoSQL Java Redis
秒杀抢购场景下实战JVM级别锁与分布式锁
在电商系统中,秒杀抢购活动是一种常见的营销手段。它通过设定极低的价格和有限的商品数量,吸引大量用户在特定时间点抢购,从而迅速增加销量、提升品牌曝光度和用户活跃度。然而,这种活动也对系统的性能和稳定性提出了极高的要求。特别是在秒杀开始的瞬间,系统需要处理海量的并发请求,同时确保数据的准确性和一致性。 为了解决这些问题,系统开发者们引入了锁机制。锁机制是一种用于控制对共享资源的并发访问的技术,它能够确保在同一时间只有一个进程或线程能够操作某个资源,从而避免数据不一致或冲突。在秒杀抢购场景下,锁机制显得尤为重要,它能够保证商品库存的扣减操作是原子性的,避免出现超卖或数据不一致的情况。
335 10
|
数据可视化 数据挖掘 BI
小预算大效率!5款免费在线项目管理工具帮你轻松上手
在快节奏的工作环境中,项目管理工具成为提高团队效率的必备利器。本文推荐5款免费且强大的在线项目管理工具,包括板栗看板、Trello、ClickUp、Asana和Monday.com,帮助小团队或初创公司在有限预算下实现高效管理。这些工具不仅支持任务分配、进度跟踪,还具备团队协作和数据可视化等功能,满足不同场景下的项目管理需求。
367 7
|
消息中间件 Java Kafka
Apache Hudi + Flink作业运行指南
Apache Hudi + Flink作业运行指南
444 1
|
安全 Java API
阿里云登录入口
本文讲解一下阿里云登录入口
|
Web App开发 数据采集 前端开发
【工具- selenium】selenium 入门级demo练习,包教包会
大家好,我是温大大 最近又开始“卷” UI 自动化框架, 其实也是响应读者们的需求(如果你也正在找工作 / 面试 / 学习,欢迎加入我们) 教你如何使用 selenium4.1.2 + python3.9 打开1个chrome 浏览器并请求1个url地址。 整个过程其实很简单,安装环境 + 写4行代码。 里面难点其实就是环境的搭建: - 首先 安装python3.9环境, - 接着 安装python编辑工具pycha
|
人工智能 运维 分布式计算
DataWorks运维中心与移动版介绍 | 《一站式大数据开发治理DataWorks使用宝典》
DataWorks运维中心是对任务进行测试和监控的模块,用户在DataStudio中进行代码开发和调试,将调试的任务经过提交发布操作后,就可以让任务按照调度配置来定时运行。也就是这个时候,任务就从开发环境进入到了生产环境。 对于生产环境中任务的测试、运维、监控等都是在运维中心完成的。运维中心包括三部分:运维大屏、任务运维和智能监控;根据任务运维的触发方式不同,又可以分为:实时任务运维、周期任务运维和手动任务运维。
1945 0
DataWorks运维中心与移动版介绍 | 《一站式大数据开发治理DataWorks使用宝典》
针对滑动拼图验证码的python&selenium解法
针对滑动拼图验证码的python&selenium解法
针对滑动拼图验证码的python&selenium解法