用于使用远程API创builddocker容器的Python脚本
我正在尝试使用Python脚本来创buildDocker容器和Docker Remote API来完成Post操作。 这是我的Python脚本: –
import requests import json url = "http://localhost:4243/containers/create" payload = {'Hostname':'','User':'','Memory':'0','MemorySwap':'0','AttachStdin':'false','AttachStdout':'t rue','AttachStderr':'true','PortSpecs':'null','Privileged': 'false','Tty':'false','OpenStdin':'false','StdinOnce':'false','Env':'null','Cmd':['date'],'Dns':'null','Image':'ubuntu','Volumes':{},'VolumesFrom':'','WorkingDir':''} headers = {'content-type': 'application/json', 'Accept': 'text/plain'} print requests.post(url, data = json.dumps(payload), headers=headers).text
但是当我运行脚本时,它显示了这个错误
json: cannot unmarshal string into Go value of type bool
我的脚本有什么问题? 我使用Python v2.7.5和Ubuntu 13.10的Requests HTTP库。 我是新来的docker和Python脚本。 任何帮助,将不胜感激。
正如在评论中指出的,你没有使用正确的types。
特别:
- 布尔值必须是
True
或False
,而不是"true"
或"false"
-
Dns
,Env
和PortSpecs
必须是None
而不是"null"
-
Memory
和MemorySwap
必须为0
而不是"0"
您可以在create命令的API文档中看到所有的types定义。
这是一个可用的有效载荷:
payload={ 'AttachStderr': True, 'AttachStdin': False, 'AttachStdout': True, 'Cmd': ['date'], 'Dns': None, 'Env': None, 'Hostname': '', 'Image': 'ubuntu', 'Memory': 0, 'MemorySwap': 0, 'OpenStdin': False, 'PortSpecs': None, 'Privileged': False, 'StdinOnce': False, 'Tty': False, 'User': '', 'Volumes': {}, 'VolumesFrom': '', 'WorkingDir': '', }
但是,不知何故,如果parsing器可以确切地知道哪个字段不能被parsing,那将是很好的:-)