Docker SDK for Python 交互

目录

1. 创建 Docker 客户端

2. 列出所有容器

3. 容器内执行命令

4. 启动和停止容器

5. 创建和运行新容器

6. 获取容器日志

7. 删除容器

8. 处理镜像


使用 Docker SDK for Python 进行交互非常方便,可以执行各种操作,如管理容器、镜像、网络等。以下是一些常见的操作和示例

1. 创建 Docker 客户端

首先,创建一个 Docker 客户端实例。

import dockerclient = docker.from_env()

2. 列出所有容器

获取所有运行或停止的容器。

# all=true 所有的容器(停止和运行)
# 不加all列出运行容器
running_containers = client.containers.list(all=True)for container in containers:print(f'容器 ID: {container.id}, 名称: {container.name}')

 3. 容器内执行命令

"""使用 exec_run 方法
最常见的方法是使用 exec_run,你可以直接在容器中执行命令"""
exec_command = container.exec_run('command')"""使用 exec_run 方法实时输出
如果希望实时获取命令输出,可以使用 stream=True 参数。"""
exec_command = container.exec_run('command', stream=True)"""
使用 bash -c 执行复杂命令
对于需要执行多个命令的情况,可以通过 bash -c 组合命令。"""
exec_command = container.exec_run("bash -c 'command1 && command2'")"""
使用参数传递执行脚本
如果你有脚本需要执行,可以将脚本名作为参数传递。"""script_name = 'your_script.sh'
exec_command = container.exec_run(f'bash -c ./{script_name}')"""两种打印方法分别对应输出多与输出少的司情况"""1. 第一种
for line in exec_command.output:if line is not None:print(line.decode().strip())
2. 第二种
print(exec_command.output.decode())

4. 启动和停止容器

启动和停止容器。

# container_name容器名字或者id
container = client.containers.get('container_name')# 运行容器
container.start()# 停止容器
container.stop()

5. 创建和运行新容器

创建并运行一个新的容器。

new_container = client.containers.run('image_name', 'command', detach=True)print(f'新容器 ID: {new_container.id}')

6. 获取容器日志

获取容器的日志信息。

logs = container.logs() print(logs.decode())

7. 删除容器

删除指定的容器。

container.remove(force=True)

8. 处理镜像

列出、拉取和删除镜像。

# 列出所有镜像images = client.images.list()for image in images:print(image.tags)# 拉取镜像client.images.pull('image_name')# 删除镜像client.images.remove('image_name', force=True)

这些示例展示了如何使用 Docker SDK for Python 与 Docker 进行交互,可以根据具体需求进行修改和扩展。


自我业务完整示例代码如下

import docker# 创建 Docker 客户端
client = docker.from_env()# 获取特定容器
def get_container(container_name):return client.containers.get(container_name)# 实时执行命令并输出结果
def run_command(container, command):exec_command = container.exec_run(command, stream=True)for line in exec_command.output:if line is not None:print(line.decode().strip())# 容器名称
container_name = 'sophon'# 获取容器
container = get_container(container_name)# 定义执行的脚本名
script_name = 'gen_fp32bmodel_mlir.sh'# 执行 init 命令及 模型转换命令
run_command(container, f"bash -c 'source ./envsetup.sh && ./modelzoo/YOLOv5/scripts/{script_name}'")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/448398.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划-简单多状态dp问题——714.买卖股票的最佳时机含手续费

1.题目解析 题目来源:714.买卖股票的最佳时机含手续费——力扣 测试用例 2.算法原理 1.状态表示 本题有两种状态,一种是卖出状态一种是买入状态 我们创建两个dp表来分别存储这两种状态,f[]表示买入,g[]表示卖出 f[i]表示第i个位…

一个Idea:爆改 T480

爆改 T480 准备大改 T480,家里有一台闲置很久的 T480,不舍得扔,打算升级一下。看了几位up主的视频后,决定动手改造。 计划如下 网卡:加装4G网卡硬盘:更换为 1T 的 NVMe 2280 固态硬盘内存:升…

WordPress添加meta标签做seo优化

一、使用function.php文件添加钩子函数添加 方法1、使用is_page()判断不同页面的page_id进行辨别添加不同页面keyword和description (1)通过页面前台源码查看对应页面的id (2)或者通过wordpress后台,点击页面列表&…

基于BeautyEye开发Java程序用户界面

文章目录 I idea引入jar包添加本地jar包maven方式引入本地包方式1:将第三方JAR包安装到本地仓库maven方式引入本地包方式2:引用本地路径将本地jar包打进war包Maven内置变量说明II BeautyEye Swing外观实现方案案例III 知识扩展Swing常用的顶级容器BeautyEye SwingI idea引入j…

南京邮电大学电工电子A实验十二(集成触发器及其应用和计数与分频电路)

文章目录 一、实验报告预览二、Word版本报告下载 一、实验报告预览 二、Word版本报告下载 点我

6本“灌水神刊”SCI,沾边可录,可选非OA,1个月Accept!

01 录用快刊 1、Drones • 影响因子:4.4 • 期刊分区:JCR1区,中科院2区 • 检索数据库:SCI • 征稿领域:该杂志主要关注无人机的设计和应用,包括无人机(UAV)、无人机系统&#x…

100. UE5 GAS RPG 显示范围魔法的攻击范围

在这一篇里,我们将制作一个范围魔法,释放魔法时,我们将在鼠标拾取位置绘制一个魔法光圈,用于显示技能释放时攻击的范围,然后再次点击可以释放技能。 创建贴花类 魔法范围标识的光圈,我们采用贴花实现&…

测试200个用户在10秒之内同时访问百度的网页

右键添加->线程->线程组 得到下面的截图 线程数:就是模仿用户并发的数量,Ramp-up:运行线程的总时间,单位是秒,循环次数:就是每个线程循环多少次。 现在的线程数是200,就是相当于有200个用户&#xff…

Internet Download Manager下载器2025绿色版带你飞一般的下载体验

Internet Download Manager下载器:带你飞一般的下载体验 🌟 **极速下载,秒变大神!** 兄弟姐妹们,还在为龟速的下载速度抓狂吗?😠 今天要给大家安利一款神奇的下载神器——Internet Download Ma…

Linux升级openssl版本

Linux升级openssl版本 服务器编译依赖库检查 $ yum -y install gcc gcc-c make libtool zlib zlib-devel版本检测 $ openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 $ ssh -V OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013下载openssl 地址:https://www.o…

Linux的hadoop集群部署

1.hadoop是一个分布式系统基础架构,主要解决海量数据额度存储与海量数据的分析计算问题 hdfs提供存储能力,yarn提供资源管理能力,MapReduce提供计算能力 2.安装 一:调整虚拟机内存,4G即可 二:下载安装包 网址:https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.4.0/…

Java知识巩固(五)

目录 基本数据类型 基本类型和包装类型的区别? 自动装箱与拆箱了解吗?原理是什么? 为什么浮点数运算的时候回邮精度丢失的风险? 如何解决浮点数运算的精度丢失问题? 超过 long 整型的数据应该如何表示? 基本数据…

javaWeb项目-Springboot+vue-车辆管理系统功能介绍

本项目源码(点击下方链接下载):java-springbootvue车辆管理系统设计与实现源码(项目源码-说明文档)_若依检车管理系统资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm…

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,…

SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项: 约定 > 配置 > 编码IDEA版本2021.1这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了controller调service,service调dao默认安装ngi…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

2023年“网络建设与运维”广西省赛试题复盘

2023年“网络搭建与应用”省赛试题复盘 第一部分:网络搭建及安全部署项目 (500分) 一、竞赛内容分布 “网络搭建与应用”竞赛共分二个部分,其中: 第一部分:网络搭建及安全部署项目 第二部分:服…

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准,适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑(核心板)采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起,旨在…

简单聊聊 限流算法

计数器 计数器算法,是在一个时间间隔内,比如一分钟内,对请求进行计数,然后将计数值和设置的最大值进行比较,如果超过了最大值,进行限流处理,拒绝请求。 他的优点是:算法简单&#…

OpenAI持续open,meta prompt开源

目录 前言 提示(Prompts) Playground中的元提示借鉴了OpenAI提示工程最佳实践和用户的实际经验。 模式(Schemas) 自描述模式 -元模式。 虽然OpenAI目前使用元提示和模式,但将来可能会集成更先进的技术&#xff0c…