运维之我的docker-python sdk

安装docker的python sdk

[[email protected] ~]#
pip install docker

这里从最简单的运行一个容器开始,在容器里面运行一段命令"echo "hello" "world""

In [1]: import docker
 
In [2]: client = docker.from_env()
 
In
[3]: print client.containers.run("redis", ["echo", "hello","world"])
hello world

当然这些你肯定是不会满足的,你想后台运行你的容器“detach”参数会满足你的需求.你可以通过启动容器后的结果获取容器的容器ID

In [13]: container = client.containers.run("registry.cn-hangzhou.aliyuncs.com/forker/redis",detach=True)
 
In [14]: print container.id
1cb26e2f144b453fc7857518ea4dba39058af5387d602515583cb21d1be4b50b

现在你可以管理你正在运行的容器列表了,这里使用“client.containers.list()”方法获取容器对象列表,进行遍历输出容器ID。

In [24]: for i in client.containers.list():
   ....:    print i.id
   ....:    
1cb26e2f144b453fc7857518ea4dba39058af5387d602515583cb21d1be4b50b
066a454c8d0b0923325448bb72ca792d1bdd26058cb95452a293f8edb3f2d978
8a2681f1100c0e01683ef65b15bfd7737e5a273b309fb72b7144fb216ea24c2d
da2a940052080863c0df07478dfb795fabdf9a6e258f3c651461c161d182ae3f

通过遍历输出我们知道现在有哪些容器运行,我们就能对这些容器进行操作,例如关掉他们,这是一个爽快的操作。

In [25]: for i in
client.containers.list():
            print i.stop()
   ....:    
None
None

当然大多数情况并不像停止容器,我们更倾向于观察下docker容器的信息,例如查看容器日志

In [26]:  s=client.containers.get(‘da2a94005208‘)
 
In [29]: print s.logs()
time="2017-02-20T09:11:00Z"
level=info msg="Listening for health checks on
0.0.0.0:80/healthcheck"
time="2017-02-20T09:11:00Z"
level=info msg="Connecting to cattle event stream."
time="2017-02-20T09:11:00Z"
level=info msg="Subscribing to metadata changes."

当然“s”里面还有更多方法等你尝试如下:

In [30]: print s.
s.attach         s.client         s.diff           s.get_archive    s.kill           s.pause          s.remove         s.restart        s.stats          s.top            s.wait
s.attach_socket  s.collection     s.exec_run       s.id             s.logs           s.put_archive    s.rename         s.short_id       s.status        
s.unpause       
s.attrs          s.commit         s.export         s.id_attribute   s.name           s.reload         s.resize         s.start          s.stop           s.update

现在容器的基本操作你都了解了,现在介绍下镜像的基本操作,现在让你查看下镜像列表

In [30]: for image in client.images.list():
   ....:     print image.id
   ....:    
sha256:b12d4d26900a5e71a16eb317cb0d8275514c522c2885fcd8ceff5469252c644b
sha256:e9fbe11760fd7ad68dbdfe1a58c9a3350452e5c7eebd60a9af47ded5f1e47918
sha256:24d2df8fa301bfc3043b59e9a874df1338f835f742a0123cfb4f3a6e152b5f88
当然“image”的方法也不止这些,更多方法如下:
In [31]:  print image.
image.attrs         image.collection    image.id            image.reload        image.short_id      image.tags         
image.client        image.history       image.id_attribute  image.save          image.tag

既然你可以看到你的镜像,当然你也需要拉取新的镜像

import docker
client =
docker.from_env()
image =
client.images.pull("alpine")
print image.id
 
我们同样可以提交容器去创建一个镜像
import docker
client =
docker.from_env()
container =
client.run("alpine", ["touch", "/helloworld"],
detached=True)
container.wait()
image =
container.commit("helloworld")
print image.id

这里只是介绍了一些简单的功能,如果需要更复杂的操作可以去官方SDK文档看看https://docker-py.readthedocs.io/en/stable/
时间: 2024-10-12 12:07:24

运维之我的docker-python sdk的相关文章

运维工程师是要学python还是学go那?

在我们的认知中,运维工程师就是一个背锅侠,那么咱们怎么样来避免做背锅侠那? 可能有人会告诉你,你需要去懂一门开发语言,其实在现价段,掌握一门开发语言已经成为高级运维工程师的必备计能.不会开发,你就不能充分理解你们系统的业务流程,开发人员是很少关注性能的问题,他们只会把功能开发完成就可以了,那么性能问题就需要运维人员来做.一个业务上线了,导致CPU使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用这么多,然后呢?然后就交给开发人员处理了,这样咋体现你的价值?如果是这

运维人员的解放----Docker快速部署

Docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和VM有巨大差别,专业的叫法是应用容器(Application Container).(我个人还是喜欢称虚拟机) Docker应用容器相对于 VM 有以下几个优点: 启动速度快,容器通常在一秒内可以启动,而 VM 通常要更久 资源利用率高,一台普通PC 可以跑上千个容器,你跑上千个 VM 试试 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源 因为VM 的 Hypervi

运维之我的docker(文章教程汇总)

介绍 Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC(Linux Container) 的高级容器引擎,源代码托管在 Github上, 基于go语言并遵从Apache2.0协议开源. 因为docker使用的是在容器技术上运行环境,而虚拟化是在虚拟化层级上运行虚拟系统然后在虚拟系统上再运行环境.单从层级上docker比虚拟化少一个"虚拟系统"层级的资源消耗,性能和启动速度上要高于虚拟化. 当然docker这两年风靡国内外并不仅因为性能上的优势,也因为dock

如何基于Python构建一个可扩展的运维自动化平台

嘉宾简介 刘天斯 从事互联网运维工作已13年,目前就职于腾讯-互动娱乐部,负责游戏大数据的运营,曾就职于天涯社区,担任首席架构师/系统管理员. 热衷开源技术的研究,包括系统架构.运维开发.负载均衡.缓存技术.数据库.NOSQL.分布式存储.消息中间件.大数据及云计算.Mesos.Docker.DevOps等领域.擅长大规模集群的运维工作,尤其在自动化运维方面有着非常丰富的经验.同时热衷于互联网前沿技术的研究,活跃在国内社区.业界技术大会,充当一名开源技术的传播与分享者. 导言 受 Reboot

Python培训是运维还是全栈,有什么区别吗?

Python语言无论是在学术上还是就业上现在都非常受欢迎,很多人都在学习Python.就像大家也都在知乎问Python是运维还是全栈,有没有什么区别. 说到运维和全栈的区别......其中运维是已经在从事运维工作的人(比如说运维工程师)通过学习Python增加自己的技能:全栈则可以简单理解为:啥都懂一些,架构,前端,后端,安全,应用, 代码...... 所以如果你是一个运维新手,想学个语言的话,请用Python,为什么呢?因为Python是个综合语言,前后端都可以,还好学.你如果能学好Pytho

实战:基于Python构建运维自动化平台

导语: 今天与大家一起探讨如何基于Python构建一个可扩展的运维自动化平台,也希望能与大家一起交流,共同成长. 此次分享将通过介绍OMServer.OManager具备的功能.架构设计.模块定制.安全审计.C/S结构的实现等几个方面的内容来展开. 为什么选择Python? 默认安装且跨平台 可读性好且开发效率高 丰富的第三方库(开发框架.各类API.科学计算.GUI等) 社区活跃&众多开发者. Python在腾讯的现状,根据去年内部提交组件语言统计,除去2.3.4前端技术,Python在高级编

Python自动化运维工具fabric的安装

使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自动登录其他服务器进行各种操作,这种实现使用shell是很难做到的,但是使用fabric实现就很简单,所以对于程序员的日常运维部署,建议使用python编写脚本 Linux下默认有python环境,安装fabric有两种方式一种是pip直接安装,另外一种是下载fabric源码,使用setuptools

运维新手们,别再问需不需要学PYTHON了!!!

经常有人在群里问,运维人员需不需要学开发?需不需要学PYTHON?PYTHON和SHELL有什么区别?天天问这种好水的问题,我实在受不了,决定帮大家扫扫盲,求求新手们,以后别他妈瞎问了.现阶段,掌握一门开发语言已经成为高级运维工程师的必备计能,不会开发,你就不能充分理解你们系统的业务流程,你就不能帮助调试.优化开发人开发的程序,开发人员有的时候很少关注性能的问题,这些问题就得运维人员来做,一个业务上线了,导致CPU使用过高,内存占用过大,如果你不会开发,你可能只能查到进程级别,也就是哪个进程占用

身为运维的你,怎么掌握python才不会失业

以前,我们都说Python是运维工程师的未来:现在,为什么大家都说不会Python的运维都将失业?运维必须懂开发,特别是python开发,已经形成大家的共识,不懂开发的运维,路会越走越窄. 而现在的情况是:有的运维人员连书都看不懂:有的书是可以看懂,别人写的简单代码也可以看懂,但自己不会写代码解决问题. 从不会写代码,到自己独立能写代码解决问题.这个问题很重要!盲目学习所谓的项目,最后还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目来加强训练. ? 其实,学习编程不止是学习

重磅|0元学 Python运维开发,别再错过了

51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类似下面的话了 我之前不知道有活动 (这个锅小编我背了) 这个活动还有吗? 我想了解一下这个活动 跟我说可以给我按活动价算吗? .......... 针对以上类似的询问小编在此统一回复大家: 好了,接下来进入今天的重中之重 本次活动:Python 运维开发——18天训练营 本课程为:网络班+面授班(北