找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4218

积分

0

好友

554

主题
发表于 3 小时前 | 查看: 3| 回复: 0

Docker 是一种流行的容器技术,让开发者能够在各种环境中快速地构建、部署和管理应用程序。而 docker-py 是一个强大的 Python 库,可以让你通过 Python 代码与 Docker 引擎 API 进行互动,实现与 Docker 命令相同的功能。本文将详细介绍 docker-py 的安装、使用以及一些常见的操作示例,帮助你更好地利用这个工具。

什么是 docker-py

docker-py 是一个针对 Docker Engine API 的 Python 库,它允许开发者在 Python 应用中执行各种与 Docker 相关的操作,比如运行容器、管理容器、管理 Docker Swarm 等。这个库的存在减少了在命令行中操作 Docker 的需要,让开发者可以使用 Python 代码更灵活地控制容器。

安装 docker-py

要安装 docker-py,你可以使用 Python 的包管理工具 pip。在终端中运行以下命令:

pip install docker

这个命令会安装最新的稳定版本。需要注意的是,docker-py 在 6.0 版本之前需要安装 docker[tls] 以支持 SSL/TLS。但在后续的版本中,这已经不再是必须的,虽然为了向后兼容,仍然可以使用这个选项。

如何使用 docker-py

安装完 docker-py 后,你就可以开始在 Python 代码中使用它了。首先,你需要连接到 Docker。你可以使用默认的 Unix 套接字或环境中的配置信息来连接 Docker:

import docker

client = docker.from_env()

通过创建的 client 对象,你可以访问 Docker 的各种功能。

运行容器

使用 docker-py 运行容器非常简单。你可以运行官方的 Ubuntu 镜像,就像在命令行中那样:

client.containers.run("ubuntu:latest", "echo hello world")

此时,你应该能看到输出结果 'hello world\n'

如果你想要运行一个容器并让它在后台执行,可以使用 detach=True 参数:

container = client.containers.run("bfirsh/reticulate-splines", detach=True)
print(container)

这行代码会在后台运行 bfirsh/reticulate-splines 镜像,并返回容器对象。

管理容器

docker-py 还提供了容器管理的功能。你可以轻松地列出当前所有运行的容器:

for container in client.containers.list():
    print(container)

要获取特定容器的信息,可以使用容器 ID:

container = client.containers.get('45e6d2de7c54')
print(container.attrs['Config']['Image'])  # 输出镜像名称

此外,你还可以查看容器的日志,或对容器进行停止等管理操作:

# 查看容器日志
print(container.logs())

# 停止容器
container.stop()

你甚至可以实时流式传输日志输出:

for line in container.logs(stream=True):
    print(line.strip())

管理镜像

除了容器的管理,docker-py 也可以用来管理 Docker 镜像。你可以拉取新的镜像或列出当前本地已有的镜像:

# 拉取 nginx 镜像
client.images.pull('nginx')

# 列出本地镜像
for image in client.images.list():
    print(image)

这些命令让你在 Python 应用中对 Docker 镜像的操作变得轻松而高效。

总结

通过 docker-py,开发者可以方便地在 Python 代码中使用 Docker 引擎 API,提高了自动化和管理容器的灵活性。无论是基础的容器运行,还是复杂的 Swarm 管理,docker-py 都能让你游刃有余。无论你是 Docker 的初学者还是有经验的开发者,熟练掌握 docker-py 都会为你的项目提供强有力的支持。

项目地址:docker-py GitHub

如果你对 Docker 和 Python 开发有更多疑问或想要获取更多学习资料,欢迎到 云栈社区 与众多开发者交流。




上一篇:Harness工程实践:AI Agent自主迭代17小时,完成16轮Prompt优化
下一篇:告别枯燥命令行:用 pyTermTk 构建跨平台终端 TUI 应用
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-7-9 05:54 , Processed in 0.668751 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表