1

Post 操作を実行する Python スクリプトを使用して、Docker Remote API で Docker コンテナーを作成しようとしています。これは私の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 スクリプトは初めてです。どんな助けでも大歓迎です。

4

1 に答える 1

3

コメントで指摘されているように、正しいタイプを使用していません。

具体的には:

  • ブール値はTrueまたはFalseの代わりに"true"またはでなければなりません"false"
  • DnsEnv、およびの代わりにするPortSpecs必要がありますNone"null"
  • Memoryの代わりにする必要MemorySwapがあります0"0"

create コマンドの API ドキュメントですべてのタイプ定義を確認できます。

動作するペイロードは次のとおりです。

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

しかし、どういうわけか、パーサーが解析できなかったフィールドを正確に伝えることができればいいでしょう:-)

于 2013-10-08T15:27:32.720 に答える