Docker和孤儿进程、僵尸进程前言在unix/linux系统中,正常情况下,子进程是通过父进程fork创建的。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。孤儿进程父进程先于子进程退出,那么子进程将成为孤儿进程。孤儿进程将被init进程(进程            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-27 21:49:05
                            
                                100阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            参考文档:https://cloud.tencent.com/developer/article/1355741https://stackoverflow.com/questions/50356032/whats-the-docker-compose-equivalent-of-docker-run-initdocker-compose配置:https://github.com/docker/co            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-14 21:12:41
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
                     当一个子进程终止后,它首先会变成一个“失效(defunct)”的进程,也称为“僵尸(zombie)”进程,等待父进程或系统收回(reap)。在Linux内核中维护了关于“僵尸”进程的一组信息(PID,终止状态,资源使用信息),从而允许父进程能够获取有关子进程的信息。如果不能正确回收“僵尸”进程,那么他们的进程描述符仍然保存在系统中            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-26 15:58:52
                            
                                108阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在使用 Docker 容器化运行 Chromedriver 的过程中,遇到了“chromedriver docker僵尸进程”的问题。这个问题反复出现,使得容器运行效率低下,进程管理混乱,严重影响了自动化测试的可用性。
> **用户反馈:**“运行 ChromeDriver 之后,一些容器内的进程无法被有效回收,导致 Docker 产生了大量僵尸进程。”
### 背景定位
在持续集成(CI)环            
                
         
            
            
            
            Docker概述预计阅读时间: 10分钟 Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付,测试和部署代码的方法,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。Docker平台Docker提供了在松散隔离的环境(称为            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-10 13:21:27
                            
                                39阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在服务器上发现有大量的僵尸进程,通过进程号等信息发现是rancher中的rancher-agent容器中存在大量僵尸进程。 首先,进程号是一种资源,在宿主机中是有限的。存在大量僵尸进程的情况就可能会导致整个宿主机的进程号资源被全部占用,导致无法启动新的进程。 查看该容器的pids.max,发现其pid cgroups并没有限制,值为max。也就是该容器到最后会将进程号占用完,导致宿主机出现问题。            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-09 04:38:37
                            
                                50阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            | Docker容器生成僵尸进程现象公司开发服务器上使用Docker跑了几个容器,这些容器都是长时间运行的。偶然发现服务器上有大量僵尸进程,大约有两三千个。简单跟踪了下,发现这些僵尸进程均是在容器的进程命名空间的。ps aux | grep 'Z' | grep -v grepll /proc/${any_zombie_pid}在容器里运行的程序是很正常的web server,怎么会这样呢?Do            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-02 17:30:57
                            
                                208阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一般的docker镜像为了节省空间,通常是没有安装systemd或者sysvint这类初始化系统的进程。一旦容器的起始进程不稳定将会产生大量的僵尸进程,影响宿主系统的运行。缺少init的容器init系统有以下几个特点:它是系统的第一个进程,负责产生其他所有用户进程。init 以守护进程方式存在,是所有其他进程的祖先。它主要负责:1.启动守护进程2.回收孤儿进程3.将操作系统信号转发给子进程以下do            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-18 16:14:36
                            
                                264阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Docker 僵尸进程与孤儿进程
在使用 Docker 运行应用程序的过程中,我们常常会遇到一些与进程相关的概念,比如"僵尸进程"和"孤儿进程"。本文将解释这两个概念的含义,并通过代码示例来说明其在 Docker 中的应用。
## 什么是僵尸进程?
在操作系统中,当一个进程的执行结束后,它的资源(如内存、文件描述符等)仍然需要被回收。如果这个进程的父进程没有及时回收这些资源,那么这个进程            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-01-12 17:33:23
                            
                                94阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            接上一篇文章。首先,打开一个终端,登陆到上次的机器中。然后执行下面的命令,重启这个案例:# 先删除上次启动的案例
$ docker rm -f app
# 重新运行案例
$ docker run --privileged --name=app -itd feisky/app:iowaitiowait分析先看一下iowait升高的问题。一般情况下,iowait升高首先会查询系统的I/O情况            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-08 06:41:41
                            
                                63阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            作者:王青  Matthew Moore 是谷歌公司的资深工程师,专注于谷歌 Docker 技术的应用,他是在谷歌最早落地 Docker 技术团队的核心成员。本次演讲他为大家介绍了谷歌使用 Docker 技术的心得。虚拟机的问题  最初,大家都使用虚拟机作为软件的运行环境,对外提供服务。为了在虚拟机上运行你的 Service,你不得不运行一大堆程序:系统进程SSH安装Agent安装Bash安装            
                
         
            
            
            
            在使用docker容器的时候,应该了解“PID1僵尸进程reap”问题。如果使用的时候不加注意,可能会导致出现一些意想不到的问题。问题僵尸进程僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误或收到终止信号所致),但在操作系统进程表中仍然有一个表项,处于“终止状态”的进程。这发生于子进程需要保留表项以允许其父进程读取子进程的exit status:一旦退出态通过wait系统调用读            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-17 09:21:56
                            
                                236阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            基本原理Docker 的实现,主要归结于三大技术:命名空间 ( Namespaces )控制组 ( Control Groups )联合文件系统 ( Union File System ) 命名空间( Namespaces ) ,是linux核心在2.4版本后逐渐引入的一项用于运行隔离的模块,利用 PID Namespace,Docker 就实现了容器中隔离程序运行中进程隔离这一目标。资            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-20 11:39:46
                            
                                71阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            背景:现从事一个容器云产品线的测试工作  场景,假设现在有一个,对产品线进行攻击,在容器云平台上创建了一个容器,容器的启动进程为循环创建zombie进程。  测试点1,容器云产品是否支持僵死进程的stop/ kill  测试点2,容器云产品容器间的隔离性是否足够强,该制造僵死进程的容器是否影响同宿主机上的其他正常用户容器进程的运行。准备二进制程序src file:
// zombie_pod.c
            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-09 15:26:09
                            
                                57阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            # 如何将宝塔面板搭载到Docker中
在现代的开发与运维工作中,Docker已成为一种非常流行的容器化技术。配置宝塔面板到Docker中,可以极大地提升管理服务器的效率。下面我们将通过一个详细的步骤流程来教会你如何实现这一点。
## 整体流程
以下是将宝塔面板安装到Docker中的基本步骤:
| 步骤 | 操作                                    |
|            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-02 06:02:59
                            
                                70阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 进 Docker MySQL:一站式数据库解决方案
在现代软件开发中,容器化技术逐渐成为一种流行的选择,其中 Docker 是最受欢迎的容器工具之一。Docker 允许开发者创建、部署和管理轻量级的容器,从而包裹应用程序及其依赖环境,使得开发、测试以及生产环境的一致性得到了极大的提升。而 MySQL 作为一种开源的关系型数据库管理系统,广泛应用于数据管理。本文将介绍如何在 Docker 中运            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-08-17 04:42:03
                            
                                11阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 项目方案:使用Docker进行应用容器化
## 概述
在当今的软件开发和部署过程中,Docker已经成为了一个非常流行的工具。使用Docker可以将应用程序和其所需的依赖项打包成为一个容器,这样就可以确保应用程序在不同环境中的一致性和可移植性。
本文将介绍如何使用Docker来进行应用容器化,并提供一个示例项目方案,帮助开发者快速上手。
## Docker简介
Docker是一个开源的应            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-29 10:29:45
                            
                                88阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 从CentOS到Docker的旅程
在当今的软件开发和部署过程中,容器化技术已经成为一种非常流行的解决方案。Docker是目前最受欢迎的容器化平台之一,它可以将应用程序和所有依赖项打包在一个独立的容器中,确保应用程序在不同环境下都能正常运行。本文将介绍如何在CentOS系统上安装和运行Docker,带您踏上一个关于CentOS到Docker的精彩旅程。
## 准备工作
在开始我们的旅程之            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-03-16 04:56:14
                            
                                25阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # Docker进root
在使用Docker进行应用容器化的过程中,有时候会遇到需要进入容器的root用户权限进行一些操作的情况。本文将介绍如何通过Docker进入root,并提供相应的代码示例。
## Docker简介
Docker是一个开源的应用容器引擎,可以将应用及其依赖打包成一个可移植的容器,然后发布到任何Linux机器上。利用Docker,开发者可以不必担心应用在不同环境中的依赖            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-01-28 10:16:04
                            
                                65阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            ## Docker进容器的实现
### 1. 流程图
使用Docker进入容器的整个流程如下所示:
```mermaid
stateDiagram
    [*] --> 列出容器
    列出容器 --> 进入容器
    进入容器 --> 退出容器
    退出容器 --> [*]
```
### 2. 操作步骤
下面逐步介绍每一步需要做什么,并给出相应的代码和注释。
#### 2            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-12-06 12:48:32
                            
                                60阅读