2013-10-08 3 views
1

Я пытаюсь создать контейнер Docker с Docker Remote API с помощью скрипта Python для выполнения операции Post. Это мой Python Script: -Python скрипт для создания контейнера docker с помощью Remote API

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 

Что случилось с моим сценарием? Я использую HTTP-библиотеки запросов для Python v2.7.5 и Ubuntu 13.10. Я новичок в скриптах docker и python. Любая помощь будет оценена.

+0

Попробуйте использовать 'true' и' False' вместо строк '' true '' и '' false ''в вашей полезной нагрузке dict. –

+0

Я пытался использовать True и False. Теперь он показывает эту ошибку-json: не могу отменить строку в значение Go типа [] string – Unferth

ответ

3

Как указано в комментариях, вы не используете правильные типы.

В частности:

  • булевы значения должны быть True или False, вместо того, чтобы "true" или "false"
  • Dns, Env и PortSpecs должны быть None вместо "null"
  • Memory и MemorySwap должны быть 0 вместо от "0"

Вы можете увидеть все определения типов в API docs for the create command.

Вот полезная нагрузка, которая работает:

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': '', 
} 

Но так или иначе, было бы неплохо, если бы анализатор мог точно сказать, какое поле не может быть разобран :-)

+0

Да :) Я использовал правильные типы и свою работу Отлично. Благодаря! – Unferth

Смежные вопросы