当前位置: 首页 > Linux

8、通过Python连接Docker进行编程

时间:2023-04-07 01:50:09 Linux

Docker其实有两个重要的概念:“Docker客户端”和“Docker守护进程”Docker服务端提供了一系列的RESTAPI(DockerRemoteAPI),当我们点击docker命令时,其实通过API与Docker服务器交互。我们可以自己编写Docker客户端,调用RESTAPI与Docker服务端进行交互。Docker官方提供了Python和Go的SDK。当然,我们可以用熟悉的语言调用RESTAPI。官方文档地址:https://docs.docker.com/devel...Docker官方提供的连接方式:unix:///var/run/docker/socktcp://host:portfd://docketfd没有默认支持远程访问配置远程访问vi/usr/lib/system/docker.service//注释掉下面一行ExecStart=/usr/bin/dockerd-Hfd://--containerd=/run/containerd/containerd.sock//添加以下行ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375-Hfd://--containerd=/run/containerd/containerd.sock//并保存,restartDockersystemctldaemon-reloadsystemctlrestartdocker//重启后查看docker的daemon进程,确认是否配置成功ps-ef|grepdockernetstat-anput|grepdocker//开启远程访问端口iptables-IINPUT-ptcp--dport2375-jACCEPT//确保防火墙放行2375端口//部署在阿里云ECS上的Docker需要添加入站方向,tcp,端口2375到安全组规则//使用本地测试连接通过Python连接Docker#通过pip安装dockersdkpipinstalldockerimportdocker#需要修改对应??的Docker服务器IP地址client=docker.DockerClient(base_url='tcp://DockerserverIP:2375')#获取所有镜像的列表,相当于dockercli执行dockerimages=client.images.list()print(images)#打印结果:[,<图片:'centos:latest'>]#Getimageidprint(images[0].id)#Printresult:sha256:3ac6dda7648810e447c94fb9f919f6c2cfa97410935e60894ef94ea6e5e4d2d3#这里发现imageid比dockercli直接执行dockerimages得到的imageid要长。#docker中的各种imageid,只要能确定containerid的唯一性即可,这里只是通过自己写的一个连接Docker的程序来举例,可以帮助我们理解Docker的管理工具的工作原理.文章来源:http://www.mi360。zh/文章/12