Docker SDK for Python 交互

news2024/11/20 9:29:13

目录

1. 创建 Docker 客户端

2. 列出所有容器

3. 容器内执行命令

4. 启动和停止容器

5. 创建和运行新容器

6. 获取容器日志

7. 删除容器

8. 处理镜像


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

1. 创建 Docker 客户端

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

import docker

client = 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 进行交互,可以根据具体需求进行修改和扩展。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu下Typora的安装与配置激活

下载: 在终端中输入如下命令: wget -qO - https://typoraio.cn/linux/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/typora.ascsudo add-apt-repository deb https://typoraio.cn/linux ./sudo apt-get updatesudo apt-get install typora 出现…

2024年诺贝尔物理学奖揭晓→

【SciencePub学术】北京时间10月8日17时45分许,2024年诺贝尔物理学奖揭晓获奖名单。John J. Hopfield、Geoffrey E. Hinton获奖,获奖理由是“表彰他们通过人工神经网络实现机器学习的基础性发现和发明”。奖金为1100万瑞典克朗。 2024年诺贝尔物理学奖得…

【JVM】高级篇

1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK,使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址:https://www.graalvm.org/ 官方标语:Build faster, smaller, leaner applications。 更低的CPU…

低代码开发平台应该归属哪个部门管理?

低代码开发平台应该归属哪个部门管理? 随着技术的不断发展,企业对于IT系统的依赖程度也在不断增加。在这样的背景下,低代码开发平台因其高效便捷的特点,越来越受到企业的青睐。然而,低代码开发平台应该归属于哪个部门…

直线度测量仪发展前景广阔!

随着工业自动化程度不断提高,制造业对生产过程中的质量控制要求越发严格。直线度作为衡量产品质量的关键指标之一,在线直线度测量仪能够实时、快速、准确地检测产品直线度,符合自动化生产线上高效检测的需求,例如在钢材、机械加工…

Unite Barcelona主题演讲回顾:深入了解 Unity 6

本周,来自世界各地的 Unity 开发者齐聚西班牙巴塞罗那,参加 Unite 2024。本次大会的主题演讲持续了一个多小时,涵盖新功能的介绍、开发者成功案例的分享,以及在编辑器中进行的技术演示,重点展示了 Unity 6 在实际项目中…

quic-go实现屏幕广播程序

最近在折腾quic-go, 突然想起屏广适合用udp实现,而http3基于quic-go,后者又基于udp, 所以玩一下。 先贴出本机运行效果图: 功能(实现)说明: 1.服务器先启动作为共享屏幕方,等待客户端连接上来 2.客户端连接 3.客户…

Linux SSH服务

Linux SSH(Secure Shell)服务是一种安全的远程登录协议,用于在Linux操作系统上远程登录和执行命令。它提供了加密的通信通道,可以在不安全的网络环境中安全地进行远程访问。 SSH服务在Linux系统中通常使用OpenSSH软件包来实现。它…

计算机中的BIOS是什么?BIOS设置界面怎么进入?

计算机术语中我们常说的BIOS是基本输入输出系统(Basic Input & Output System)的简称。它是一组固化在计算机主板上的ROM芯片中的程序,计算机启动时最早运行的软件之一。它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自…

20241008深度学习动手篇

文章目录 1.如何写一个神经网络进行训练?1.1创建一个子类,搭建你需要的神经网络结构1.2 加载数据集1.3 自定义一些指标评估函数1.4训练1.5 结果展示 2.参考文献 1.如何写一个神经网络进行训练? 1.1创建一个子类,搭建你需要的神经网络结构 # File: 241008LeNet.py # Author:…

RTSP RTP RTCP SDP基础知识

理论 流(Streaming ) 是近年在 Internet 上出现的新概念,其定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。 流式传输分为两种 顺序流式传输 (Progressive Streaming) 实时流式传输 (Real time Streaming) ​​​​​…

李强总理签署国务院令 公布《网络数据安全管理条例》

中华人民共和国国务院令 第790号 《网络数据安全管理条例》已经2024年8月30日国务院第40次常务会议通过,现予公布,自2025年1月1日起施行。 总理 李强 2024年9月24日 网络数据安全管理条例 第一章 总则 第一条 为了规范网络数据处理活动,保…

SpringBoot日常:redission的接入使用和源码解析

文章目录 一、简介二、集成redissionpom文件redission 配置文件application.yml文件启动类 三、JAVA 操作案例字符串操作哈希操作列表操作集合操作有序集合操作布隆过滤器操作分布式锁操作 四、源码解析 一、简介 Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格…

基于java+springboot的旅游信息网站、旅游景区门票管理系统设计与实现

该系统是基于javaspringboot开发的旅游景区门票管理系统。是给师弟开发的大四实习作品。学习过程中,遇到问题可以咨询github作者。 演示地址 前台地址: http://travel.gitapp.cn 后台地址: http://travel.gitapp.cn/admin 后台管理帐号&am…

开发一个ftp上传客户端

文章目录 需求分析Tkinter基本用法多窗口切换FTP上传 程序打包源码 需求 项目中有个小功能模块 ,需要win下实现ftp上传功能,编写一个DEMO测试 要求 界面简单选择本地文件 上传ftp服务器显示进度条显示状态上传完成后显示URL分享地址 分析 Tkinter Tkint…

【读书笔记·VLSI电路设计方法解密】问题6:超大规模集成电路(VLSI)设计实现的主要方法是什么

现代芯片设计实践的主要方法包括: 定制设计现场可编程门阵列 (FPGA)基于标准单元的设计 (ASIC)平台/结构化ASIC在定制设计方法中,每个晶体管都是手动设计和布局的。这种方法的主要优势在于电路可以高度优化以提高速度、减少面积或降低功耗。然而,由于涉及大量手工工作,这种…

什么是物联网nb水表?

物联网NB水表是一种利用NB-IoT(窄带物联网)技术实现远程数据传输的智能水表。这种水表不仅能够精确计量用户的用水量,还能通过无线通信技术实现数据的远程传输和管理。下面我们来详细介绍物联网NB水表的主要特点和功能。 一、基本概念 -定义:物联网NB水…

nVisual集成项目交付模式升级方案

集 成 项 目 的 普 遍 现 状 1 集成项目的普遍现状 设计、工程和运维各部门使用不同的软件工具,缺乏有效的协同,工程数据无法有效积累并转化为运维数据; 传统项目验收交付模式已经无法满足用户的需求,需要项目交付后协助用…

分治算法(6)_归并排序_交易逆序对的总数

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 分治算法(6)_归并排序_交易逆序对的总数 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#x1f48…

怎么去掉图片上的文字不留痕迹?学会这5种P图方法轻松解决

图片编辑已成为我们日常生活和工作中不可或缺的一部分。但有时候,图片上的一些文字却成了我们分享或使用的障碍。如何无痕去除图片上的文字呢?今天,我将为大家介绍5种高效工具,让你轻松P图,一起来学习下吧。 工具一&am…