当前位置:首页 > Python > 正文

使用 Docker SDK for Python 轻松管理容器(docker-py 入门教程)

在现代 DevOps 和云原生开发中,Docker SDK for Python(也称为 docker-py)是一个非常强大的工具。它允许开发者通过 Python 脚本直接与 Docker 守护进程通信,实现对容器、镜像、网络等资源的自动化管理。无论你是刚接触容器技术的小白,还是希望提升自动化能力的开发者,这篇教程都将带你从零开始掌握 docker-py 的基本用法。

什么是 Docker SDK for Python?

Docker SDK for Python 是官方推荐的 Python 库,用于与 Docker 引擎进行交互。它封装了 Docker Remote API,让你无需手动调用 REST 接口,就能以面向对象的方式操作 Docker。该库的 PyPI 包名为 docker,但常被简称为 docker-py

使用 Docker SDK for Python 轻松管理容器(docker-py 入门教程) docker-py API 容器自动化 第1张

安装 docker-py

首先,确保你的系统已安装 Docker 并正在运行。然后使用 pip 安装 Python SDK:

pip install docker

快速入门:连接 Docker 守护进程

安装完成后,我们可以通过以下代码测试是否能成功连接本地 Docker 引擎:

import docker# 创建客户端实例(自动使用默认 socket)client = docker.from_env()# 获取 Docker 版本信息print(client.version())

如果一切正常,你将看到类似如下的输出:

{'Platform': {'Name': 'Docker Engine - Community'}, 'Components': [...], 'Version': '24.0.5', ...}

常用操作示例

1. 拉取镜像

# 拉取 nginx 镜像image = client.images.pull('nginx:latest')print(f"镜像 {image.tags[0]} 已拉取")

2. 运行容器

# 启动一个后台运行的 nginx 容器container = client.containers.run(    "nginx:latest",    detach=True,    ports={'80/tcp': 8080})print(f"容器 {container.short_id} 已启动,可通过 http://localhost:8080 访问")

3. 列出所有容器

# 获取所有容器(包括停止的)containers = client.containers.list(all=True)for c in containers:    print(f"ID: {c.short_id}, 状态: {c.status}, 镜像: {c.image.tags[0] if c.image.tags else '无标签'}")

4. 停止并删除容器

# 停止并删除上面创建的容器container.stop()container.remove()print("容器已清理")

权限与安全注意事项

默认情况下,docker.from_env() 会读取当前用户的 Docker 环境变量(如 DOCKER_HOST)。如果你在 Linux 上运行,可能需要将用户加入 docker 用户组,否则会遇到权限错误:

sudo usermod -aG docker $USER

⚠️ 注意:赋予非 root 用户 Docker 权限等同于赋予其 root 权限,请谨慎操作。

总结

通过本教程,你已经学会了如何使用 Docker SDK for Python(即 docker-py)来拉取镜像、运行容器、查看状态以及清理资源。这项技能对于实现 容器自动化、构建 CI/CD 流水线或开发 DevOps 工具链至关重要。

记住,Python Docker API 的功能远不止这些,你还可以管理卷、网络、服务(Swarm 模式)等。建议查阅 官方文档 深入学习。

现在,你可以尝试编写自己的脚本来自动化日常的 Docker 操作了!