前言
Docker SDK for Python 是一个强大的库,允许开发者通过 Python 程序直接与 Docker 引擎进行交互,执行容器管理、镜像处理和其他 Docker 操作。接下来,我将提供一个基本的使用指南,介绍如何安装和使用 Docker SDK for Python。
安装 Docker SDK for Python
可以通过 pip
安装 Docker SDK:
pip3 install docker -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
修改 Docker 配置文件
# 登录docker engine所在服务器,修改docker.service文件
vim /usr/lib/systemd/system/docker.service
# 修改如下内容:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 改为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
# 重启docker
systemctl daemon-reload
systemctl restart docker
常用案例
构建image
import docker
# 创建 Docker 客户端
# client = docker.from_env()
client = docker.DockerClient(base_url='tcp://192.168.40.13:2375')
# 构建镜像
image, logs = client.images.build(
path='path/to/your/dockerfile/directory',
tag='your-image-name',
rm=True, # 是否在构建完成后删除中间容器
)
# 打印构建日志
for line in logs:
print(line)
推送image
import docker
# 创建 Docker 客户端
# client = docker.from_env()
client = docker.DockerClient(base_url='tcp://192.168.40.14:2375')
# 镜像名称
image_name = 'your-image-name'
# 登录到 Docker 镜像仓库(例如 Docker Hub)
res_dict = client.login(username='your-username', password='your-password', registry='192.168.40.13:8083')
# 推送镜像
for line in client.images.push(image_name, stream=True, decode=True):
print(line)
删除image
import docker
# 创建 Docker 客户端
# client = docker.from_env()
client = docker.DockerClient(base_url='tcp://192.168.40.14:2375')
# 镜像名称
image_name = 'your-image-name'
# 删除镜像
try:
client.images.remove(image_name, force=True)
print(f"Image '{image_name}' removed successfully.")
except docker.errors.ImageNotFound:
print(f"Image '{image_name}' not found.")
except docker.errors.APIError as e:
print(f"Error occurred while removing image '{image_name}': {e}")
启动容器
import docker
# 创建 Docker 客户端
client = docker.DockerClient(base_url='tcp://192.168.40.14:2375')
try:
# 启动一个 nginx 容器
container = client.containers.run("nginx", detach=True, name="my_nginx")
print(f"Container {container.name} started")
# 等待几秒钟
import time
time.sleep(5)
# 查看容器日志
logs = container.logs()
print("Logs:")
print(logs.decode('utf-8'))
finally:
# 停止并删除容器
container.stop()
container.remove()
print(f"Container {container.name} stopped and removed")
detach=True
:容器将在后台运行。name
:为容器指定一个名称。
文档资源
对于更高级的用法和更多的功能,可以访问 Docker SDK for Python的官方文档。该文档详细介绍了所有可用的方法和用法。