cookbook/tools/docker_tools.py
import sys
from agno.agent import Agent
try:
from agno.tools.docker import DockerTools
docker_tools = DockerTools(
enable_container_management=True,
enable_image_management=True,
enable_volume_management=True,
enable_network_management=True,
)
# 使用 Docker 工具创建 Agent
docker_agent = Agent(
name="Docker Agent",
instructions=[
"您是一个 Docker 管理助手,可以执行各种 Docker 操作。",
"您可以管理容器、镜像、卷和网络。",
],
tools=[docker_tools],
show_tool_calls=True,
markdown=True,
)
# 示例:列出所有正在运行的 Docker 容器
docker_agent.print_response("List all running Docker containers", stream=True)
# 示例:拉取并运行一个 NGINX 容器
docker_agent.print_response("Pull the latest nginx image", stream=True)
docker_agent.print_response("Run an nginx container named 'web-server' on port 8080", stream=True)
except ValueError as e:
print(f"\n❌ Docker Tool Error: {e}")
print("\n🔍 故障排除步骤:")
if sys.platform == "darwin": # macOS
print("1. 确保 Docker Desktop 正在运行")
print("2. 检查 Docker Desktop 设置")
print("3. 尝试在终端中运行 'docker ps' 来验证访问权限")
elif sys.platform == "linux":
print("1. 检查 Docker 服务是否正在运行:")
print(" systemctl status docker")
print("2. 确保您的用户有权限访问 Docker:")
print(" sudo usermod -aG docker $USER")
elif sys.platform == "win32":
print("1. 确保 Docker Desktop 正在运行")
print("2. 检查 Docker Desktop 设置")