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>
目录
相关文章
|
11月前
Porfinet从转Ethernet/IP从总线协议转换网关
通过使用协议转换网关,可以有效实现PROFINET与EtherNet/IP之间的通信互操作,提升工业自动化系统的灵活性和兼容性。关键在于选择合适的网关设备,正确配置网络和协议参数,确保数据的准确传输和实时通信。通过以上步骤,可以顺利实现从PROFINET到EtherNet/IP的协议转换,满足复杂工业环境中的多协议集成需求。
381 31
|
12月前
|
数据可视化 搜索推荐 数据管理
干货满满!J 人电商团队圣诞季,哪 6 款办公软件能促进团队学习进步?
圣诞节期间,电商零售行业竞争激烈,J人特质的团队需借助高效办公软件优化流程、提升协作与个人能力。本文推荐6款可视化团队协作工具:板栗看板、Trello、Airtable、Asana、Miro和Notion。这些软件在任务管理、数据处理、创意激发等方面各具优势,帮助团队在圣诞季保持高效工作节奏,提升沟通效率,实现业务与个人成长双丰收。通过合理运用这些工具,J人团队能在激烈的市场竞争中脱颖而出,取得优异成绩。
227 4
|
弹性计算 人工智能 测试技术
阿里云服务器租用收费标准价格表(2023年更新)
阿里云服务器租用收费标准价格表(2023年更新)
885 0
|
Dart 前端开发 API
Flutter笔记:手写一个简单的画板工具
1. 任务介绍Flutter笔记实现一个简单的画板工具作者目 录1. 任务介绍2. 知识点准备3. 代码实现与效果1. 任务介绍在本文中,我们将一起开发一个基本的Flutter画板应用,用户可以在画板上自由绘制,选择不同的颜色来绘制线条。这个画板应用将允许用户通过点击颜色选择按钮来选择画笔的颜色,并提供鼠标光标支持以增强用户体验。
607 0
|
存储 编解码 调度
操作系统的启动过程
【9月更文挑战第33天】本文将详细介绍操作系统的启动过程,包括BIOS、内核加载和系统初始化等步骤。通过本文,读者可以了解到操作系统启动的整个过程,以及各个步骤的作用和意义。同时,本文还将提供一些代码示例,帮助读者更好地理解操作系统的启动过程。
|
开发框架 Java .NET
Mono 现状与未来: 从 Xamarin 到 WebAssembly、Blazor 及.NET 5
  本文要点:   Mono 项目始于 2001 年,是首个面向.NET 应用程序的多平台、开源框架的项目。Xamarin 和 Blazor 分别代表了微软在移动和 Web 应用程序方面的努力,它们都是基于 Mono 并由 Mono 提供支持的。.NET 5 为用户提供了两种运行时选项:高性能的 CoreCLR(用于服务器和桌面应用程序)和轻量级的 Mono(用于移动设备和 WebAssembly)。尽管 Mono 已经是.NET 的一部分了,但仍有一些开发工作要致力于改善 Mono 的运行时性能和垃圾回收器。现在.NET Core 可以与 Mono 并行安装了,因此可以一起演进语言和运行时
1467 0
微信小游戏制作工具中的分享功能怎么用?
微信小游戏制作工具中的分享功能怎么用?
395 0
|
机器学习/深度学习 自然语言处理 数据可视化
阿里云 ModelScope模块分析测评
阿里云 ModelScope 是一种用于模型评估和性能分析的开源工具。它旨在帮助用户更好地了解和评估不同的机器学习模型,并提供可视化和统计分析来支持决策制定。
|
存储 开发工具 开发者
命令行参数解析神器:深入剖析Python中的argparse模块
命令行参数解析神器:深入剖析Python中的argparse模块
|
消息中间件 JavaScript Java
Java Web应用开发案例|模拟12306抢票
模拟12306网上抢票的业务场景。春节等高峰时期,车票资源非常紧张,因此在约定时间放票,会存在大量抢票行为。服务器为了缓解并发高峰时的压力,抢票请求会用消息中间件进行排队处理。出票行为在服务器的独立线程中进行,这样主线程主要用于接收购票请求,异步线程用于出票,会大大缓解服务器的压力。
680 0
Java Web应用开发案例|模拟12306抢票