python docker api
2024-10-20 06:02:36
开启Remote API
docker默认是没有开启Remote API的,需要我们手动开启。编辑/lib/systemd/system/docker.service
文件,
在文件里的ExecStart
参数后面添加-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
然后重启sudo systemctl daemon-reload sudo service docker restart 在浏览器查看:
备注:我这里用了 JSONView-for-Chrome插件 ,用git下载下来,chrome设置 - 扩展程序 (地址栏输入chrome://extensions/)-> 选中 开发模式-> 点击"加载已解压的扩展程序" -> 选择插件目录(xxx\JSONView-for-Chrome-master\WebContent)
Python API
需要安装pip3 install docker-py,理论上docker-py可以干所有事情,但实际现在还不不怎么好用
import docker client = docker.DockerClient("http://192.168.100.5:2375")
#打印现有的images名称
#images =client.images.list()
#for img in images:
#print(img.attrs["RepoTags"][])
#获取container
for container in client.containers.list():
#print(dir(container))
print("container:"+container.name+" image:"+container.image.attrs["RepoTags"][])
#拉取镜像 相当于sudo docker pull alpine
image = client.images.pull("alpine")
#运行镜像 如果detach=True,会立即返回一个container对象
container = client.containers.run("alpine", ["touch", "/helloworld"], detach=True)
container.wait()
#提交新镜像
image = container.commit("helloworld")
import docker client = docker.DockerClient("http://192.168.100.5:2375")
#打印现有的images名称
#images =client.images.list()
#for img in images:
#print(img.attrs["RepoTags"][])
#获取container
for container in client.containers.list():
#print(dir(container))
print("container:"+container.name+" image:"+container.image.attrs["RepoTags"][])
#拉取镜像 相当于sudo docker pull alpine
image = client.images.pull("alpine")
#运行镜像 如果detach=True,会立即返回一个container对象
container = client.containers.run("alpine", ["touch", "/helloworld"], detach=True)
container.wait()
#提交新镜像
image = container.commit("helloworld")
参考:
https://docs.docker.com/develop/sdk/examples/
https://github.com/docker/docker-py
https://letong.gitbooks.io/docker/content/API/python_api.html
最新文章
- meta_value与meta_value_num的区别(排序)
- CSS魔法堂:重拾Border之——不仅仅是圆角
- ObjectStream 及 序列化 介绍
- C#软件设计——小话设计模式原则之:接口隔离原则ISP
- Codeforces Round B. Buttons
- jtree添加节点
- 使用AFNetWorking 实现以Basic Authentication方式获取access-token
- 【IHttpHandler】HttpModule的认识
- 【重走Android之路】【路线篇(一)】路线图
- Java并发实现一(并发的实现之Thread和Runnable的区别)
- BCB6.0是垃圾的二十条理由
- css @media认识
- css3动画--位移加阴影
- SSH服务器拒绝了密码,请再试一次
- Vue使用watch监听一个对象中的属性
- c++入门之出话指针和地址。
- Beta阶段冲刺2.0
- Luogu 1613 跑路(最短路径,倍增)
- 【struts2】预定义拦截器
- 【Ubuntu】任务管理器loadruner