PowerShell 技能连载 - Docker 容器管理
适用于 PowerShell 7.0 及以上版本
容器化已成为现代应用部署的主流方式。无论是微服务架构、CI/CD 流水线还是本地开发环境,Docker 都扮演着核心角色。在 Windows 和跨平台场景中,PowerShell 凭借强大的对象管道和丰富的模块生态,能够将 Docker 操作无缝融入自动化运维流程。
传统的容器管理往往依赖手动执行 docker 命令,效率低下且容易出错。而通过 PowerShell 脚本化封装,我们可以实现镜像构建的标准化、容器编排的可重复部署、以及资源清理的定时任务调度。本文将从基础操作、Docker Compose 编排和运维工具集三个维度,展示如何用 PowerShell 打造完整的容器管理方案。
掌握这些技巧后,你可以将日常的容器运维工作转化为可版本控制、可审计的自动化脚本,真正实现”基础设施即代码”的容器管理理念。
容器基础操作
在日常开发中,我们频繁地进行镜像拉取、容器启停和日志查看等操作。下面的脚本将这些常见操作封装为一组可复用的函数,并支持管道操作和结构化输出。
1 | function Get-DockerImageList { |
上面的代码定义了三个核心函数:Get-DockerImageList 以结构化对象形式输出镜像信息,支持按名称过滤和仅显示悬空镜像;Start-DockerApp 封装了容器启动流程,自动处理端口映射、卷挂载、环境变量注入等常见配置;Get-DockerContainerLog 提供灵活的日志查看方式,支持尾部行数、实时跟踪和时间过滤。
执行结果示例:
1 | PS> Get-DockerImageList -Filter 'nginx' |
Docker Compose 编排与 PowerShell 自动化
在多服务场景下,Docker Compose 是首选的编排工具。我们可以用 PowerShell 动态生成 Compose 文件、管理服务生命周期,并将环境配置与部署流程解耦,实现可重复的一键部署。
1 | function New-DockerComposeConfig { |
这段代码的核心思路是将 Compose 配置参数化。New-DockerComposeConfig 根据项目名称和镜像版本动态生成 YAML 文件,包含健康检查、资源限制和持久化卷定义。Invoke-DockerCompose 对 docker compose 子命令做了一层 PowerShell 封装,支持启动、停止、重启、拉取镜像和查看状态等操作,每个动作都有清晰的状态提示。
执行结果示例:
1 | PS> New-DockerComposeConfig -ProjectName 'myblog' -AppImage 'myblog:v2.1' -AppPort 8080 |
容器运维工具集
随着容器数量增长,定期清理无用资源、监控容器健康状态和检查镜像安全变得至关重要。下面的工具集提供了批量清理、资源监控和安全扫描的自动化能力。
1 | function Remove-DockerOrphanResources { |
这套工具集包含三个核心功能:Remove-DockerOrphanResources 生成详细的清理报告,支持 DryRun 模式预览将要删除的资源,避免误删;Get-DockerResourceMonitor 以固定间隔采集所有运行中容器的 CPU、内存和网络指标,适合排查性能瓶颈;Test-DockerImageSecurity 调用 Trivy 或 Docker Scout 对镜像进行漏洞扫描,按严重级别过滤结果。
执行结果示例:
1 | PS> Remove-DockerOrphanResources -DryRun |
注意事项
Docker 服务依赖:运行脚本前确保 Docker Desktop 或 Docker Engine 已启动并正常运行,可通过
docker info命令快速验证,脚本中建议加入服务状态检查逻辑。ConvertTo-Yaml 模块:
New-DockerComposeConfig函数依赖powershell-yaml模块来序列化 YAML,使用前需执行Install-Module -Name powershell-yaml -Scope CurrentUser安装。权限与安全:容器操作通常需要管理员或 docker 用户组权限,在 CI/CD 环境中注意凭据管理,避免在 Compose 文件中硬编码数据库密码,应使用 Docker Secrets 或环境变量文件。
资源清理的破坏性:
Remove-DockerOrphanResources的-IncludeVolumes参数会删除未挂载的卷数据,生产环境中务必先使用-DryRun预览,确认无误后再执行实际清理。监控性能开销:
Get-DockerResourceMonitor通过docker stats采集指标会引入轻微的 CPU 开销,在容器数量超过 50 个时建议降低采集频率或仅监控关键服务。镜像扫描工具:
Test-DockerImageSecurity优先使用 Trivy(开源免费),备选 Docker Scout(需 Docker Desktop 许可)。对于企业级场景,可集成 Aqua、Snyk 等商业扫描平台获取更全面的漏洞情报。
PowerShell 技能连载 - Docker 容器管理
http://blog.vichamp.com/2026/01/19/powershell-docker-management/