网站建设里的知识百度站内搜索 wordpress
2026/4/18 18:05:48 网站建设 项目流程
网站建设里的知识,百度站内搜索 wordpress,大数据网站建设和,长沙网站建设接单在日常开发和运维中#xff0c;我们经常需要对 Docker 容器进行批量操作#xff0c;比如启动容器、重置 root 密码、删除无用容器等。手动执行命令效率低且容易出错。本文将通过 Python 脚本实现以下功能#xff1a; 启动指定名称的容器修改容器内 root 用户密码安全删除容…在日常开发和运维中我们经常需要对 Docker 容器进行批量操作比如启动容器、重置 root 密码、删除无用容器等。手动执行命令效率低且容易出错。本文将通过 Python 脚本实现以下功能启动指定名称的容器修改容器内 root 用户密码安全删除容器先 stop 再 rm获取当前主机的 CPU、内存、磁盘使用情况所有操作均基于subprocess和psutil库适用于 Linux 环境如 CentOS、Ubuntu。前提条件已安装 Docker 并运行Python 3.6安装依赖库pipinstallpsutil一、启动 Docker 容器fromsubprocessimportPopen,PIPE namecentos7-novnc3dpPopen([docker,start,name],stderrPIPE)_,stderrp.communicate()codestderr.decode(utf-8).strip()ifcodeorcode.startswith(name):response{code:200,msg:success}else:response{code:500,msg:code}print(response)✅ 说明docker start成功时通常无输出stderr 为空若容器不存在或已运行可能返回错误信息需根据实际 stderr 判断二、修改容器内 root 密码fromsubprocessimportPopen,PIPE root_passwd1234567namecentos7-novnc28# 构造修改密码的 shell 命令pass_cmdfecho root:{root_passwd} | chpasswd echo successp2Popen([docker,exec,-i,name,/bin/bash,-c,pass_cmd],stdoutPIPE,stderrPIPE)stdout,stderr2p2.communicate()# 注意chpasswd 成功时通常无 stderr成功标志由 stdout 中的 success 判断outputstdout.decode(utf-8).strip()errorstderr2.decode(utf-8).strip()ifsuccessinoutputor(outputanderror):response{code:200,msg:root修改密码成功}else:response{code:500,msg:errororoutput}print(response)⚠️ 注意原始代码中误将stderr当作成功标志实际上chpasswd成功时不会输出到 stderr更可靠的方式是检查stdout是否包含success或两者均为空三、安全删除容器先 stop 再 rmfromsubprocessimportPopen,PIPE namereverent_matsumototry:# 停止容器p_stopPopen([docker,stop,name],stdoutPIPE,stderrPIPE)stdout,stderrp_stop.communicate()stop_outputstdout.decode(utf-8).strip()ifstop_outputname:# docker stop 成功会返回容器名# 删除容器p_rmPopen([docker,rm,name],stdoutPIPE,stderrPIPE)rm_out,rm_errp_rm.communicate()response{code:200,msg:删除成功}else:response{code:500,msg:stderr.decode(utf-8)}exceptFileNotFoundError:response{code:500,msg:docker未安装}print(response)✅ 提示docker stop成功时会输出容器 ID 或名称取决于输入必须先 stop 再 rm否则docker rm会失败除非加-f四、获取系统资源使用情况CPU、内存、磁盘importpsutilimportosdefbytes2human(n):将字节转换为易读格式symbols(KB,MB,GB,TB)fori,sinenumerate(symbols):unit1(i1)*10# 1KB1024, 1MB1024^2...ifnunit:returnf{n/(unit//1024):.2f}{s}returnf{n:.2f}B# 内存信息mem_infopsutil.virtual_memory()disk_usagepsutil.disk_usage(/)response{code:200,msg:success,data:{memory:{current_process_memory:bytes2human(psutil.Process(os.getpid()).memory_info().rss),total:bytes2human(mem_info.total),used:bytes2human(mem_info.used),available:bytes2human(mem_info.available),free:bytes2human(mem_info.free),active:bytes2human(mem_info.active),inactive:bytes2human(mem_info.inactive),percent:f{mem_info.percent}%,cpu_cores:psutil.cpu_count()},disk_usage:{total:bytes2human(disk_usage.total),used:bytes2human(disk_usage.used),free:bytes2human(disk_usage.free),percent:f{disk_usage.percent}%}}}print(response) 输出示例简化{code:200,msg:success,data:{memory:{total:15.50 GB,percent:45.2%,...},disk_usage:{total:931.51 GB,percent:32.1%,...}}}总结通过以上脚本我们可以自动化管理 Docker 容器生命周期动态修改容器内部用户密码适用于初始化配置实时监控服务器资源便于集成到运维平台建议在生产环境中应增加日志记录、异常重试、权限校验等机制提升脚本健壮性。参考资料Docker CLI 文档psutil 官方文档如果你觉得这篇文章对你有帮助欢迎点赞、收藏、关注也欢迎在评论区交流你的自动化运维经验 ✍️ 本文代码已在 CentOS 7 Docker 20.10 Python 3.9 环境下测试通过。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询