我正在尝试使用https://docker-py.readthedocs.io/en/stable/index.html制作一个Python脚本,该脚本运行我的容器。
安装软件包后(使用import docker
导入,我的图像称为" Janus"(,这是我的Python脚本:
import docker
client = docker.from_env()
client.containers.run("janus")
运行脚本时,我会得到
Traceback (most recent call last):
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/util/timeout.py", line 124, in _validate_timeout
float(value)
TypeError: float() argument must be a string or a number, not 'Timeout'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test_docker_python_sdk.py", line 3, in <module>
client.containers.run("janus")
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/models/containers.py", line 803, in run
detach=detach, **kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/models/containers.py", line 861, in create
resp = self.client.api.create_container(**create_kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/api/container.py", line 429, in create_container
return self.create_container_from_config(config, name)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/api/container.py", line 439, in create_container_from_config
res = self._post_json(u, data=config, params=params)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/api/client.py", line 289, in _post_json
return self._post(url, data=json.dumps(data2), **kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/utils/decorators.py", line 46, in inner
return f(self, *args, **kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/docker/api/client.py", line 226, in _post
return self.post(url, **self._set_request_timeout(kwargs))
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/sessions.py", line 581, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 587, in urlopen
timeout_obj = self._get_timeout(timeout)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 302, in _get_timeout
return Timeout.from_float(timeout)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/util/timeout.py", line 154, in from_float
return Timeout(read=timeout, connect=timeout)
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/util/timeout.py", line 94, in __init__
self._connect = self._validate_timeout(connect, 'connect')
File "/home/milanlakhani/.local/lib/python3.6/site-packages/requests/packages/urllib3/util/timeout.py", line 127, in _validate_timeout
"int, float or None." % (name, value))
也许我错过了一些非常明显的东西,因为我是初学者,但是在Docker-Py文档中,我看不出为什么这不起作用。(我认为我不需要设置环境变量,例如 DOCKER_HOST
, DOCKER_TLS_VERIFY
, DOCKER_CERT_PATH
,因为据我所知,我以正常方式在计算机上运行docker。(
请告诉我,如果您需要更多详细信息,我还可以发送用于构建图像的Dockerfile,该图像公开端口并具有命令
CMD /usr/bin/janus -o --configs-folder=/usr/local/share/ct-camera/janus
但是,我尝试了其他图像和图像名称,其中包括存储库,而无论图像如何,错误始终是相同的!
我还尝试了此软件包中的其他命令,但也发生了同样的事情。
我认为您需要提供正确的图像名称 - 像:
client.containers.run("myrepo.com/janus")
并确保拥有最新的requests
软件包:
pip3 install -U requests
使用pip3 uninstall requests
和pip3 install requests==2.15
将我的请求软件包的版本从2.22降低到2.15,解决了此问题。