docker-py:用 Python 操控 Docker
docker-py:用 Python 操控 Docker
Docker 官方维护的 Python SDK 已经有 7,185 Star。这个项目让开发者能在 Python 代码里直接调用 Docker Engine API,不用离开代码环境就能管理容器。

核心能力:Python 里跑 Docker
这个库覆盖的功能很全:
- 运行和停止容器
- 列出、查看容器状态
- 拉取镜像、管理本地镜像
- 读取容器日志(支持流式)
- 管理 Swarm 集群
安装很简单,pip 直接装:
pip install docker
用法也直接。连上 Docker:
import docker
client = docker.from_env()
跑一个容器:
>>> client.containers.run("ubuntu:latest", "echo hello world")
'hello world\n'
后台运行:
>>> client.containers.run("bfirsh/reticulate-splines", detach=True)
<Container '45e6d2de7c54'>
查看所有容器:
>>> client.containers.list()
[<Container '45e6d2de7c54'>, <Container 'db18e4f20eaa'>, ...]
读日志:
>>> for line in container.logs(stream=True):
... print(line.strip())
Reticulating spline 2...
Reticulating spline 3...
...
这些操作和命令行 docker run、docker ps、docker logs 对应,但全部变成了可编程的 Python 对象。
适合什么场景
我在几个场景里用过这个库,都比较顺手。
第一个是自动化测试。CI 流水线里需要临时启动数据库或缓存容器,用 Python 脚本调 docker-py 比写 shell 更灵活,错误处理也更方便。
第二个是批量管理。需要同时启动几十个容器做压力测试,或者定时清理过期镜像,写成 Python 脚本比手动敲命令高效很多。
第三个是日志采集。container.logs(stream=True) 返回的是生成器,可以实时处理容器输出,集成到现有的 Python 日志系统里。

实际体验
文档写得很清楚,每个 API 都有示例。对象化的设计让代码读起来很直观,client.containers.run() 就是运行容器,container.stop() 就是停止,命名很一致。
需要注意的地方是,这个库依赖本地 Docker daemon,远程连接需要额外配置环境变量或手动指定地址。TLS 支持已经内置,6.0 之后不需要单独安装扩展。
另外,API 版本和 Docker Engine 版本要匹配。如果用太新的 Docker daemon 搭配旧版 sdk,部分功能可能不兼容。
总结
docker-py 是个成熟稳定的工具。对于已经在用 Python 做后端开发或运维脚本的人来说,它能很好地替代 shell 命令,让 Docker 操作融入代码逻辑。
如果你经常需要在 Python 项目里启动容器、管理镜像或处理容器日志,这个库值得看看。7k+ Star 的数据也能说明,用的人确实不少。
er 操作融入代码逻辑。
如果你经常需要在 Python 项目里启动容器、管理镜像或处理容器日志,这个库值得看看。7k+ Star 的数据也能说明,用的人确实不少。
更多推荐



所有评论(0)