前言

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的官方文档。该文档详细介绍了所有可用的方法和用法。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐