2
我使用Docker-py和dockerpty以便exec
命令使用Docker
Python API。Python - 在Docker客戶端連接中的tlsv1警報協議版本錯誤
這是很簡單的代碼:
container = client.inspect_container(containerId)[0]
dockerpty.exec_command(client, container, command)
當我想如echo 'hello'
它工作正常執行命令。然而,命令,如/bin/bash
,即使我能夠得到的終端,它導致了以下錯誤:
ubuntu:test$ python main.py exec [containerid] /bin/bash
[email protected]:/opt/apache# Traceback (most recent call last):
File "__main__.py", line 216, in <module>
main()
File "__main__.py", line 201, in main
ec.execute()
dockerpty.exec_command(client, container, command)
File "/usr/local/lib/python2.7/site-packages/dockerpty/__init__.py", line 44, in exec_command
PseudoTerminal(client, operation).start()
File "/usr/local/lib/python2.7/site-packages/dockerpty/pty.py", line 334, in start
self._hijack_tty(pumps)
File "/usr/local/lib/python2.7/site-packages/dockerpty/pty.py", line 373, in _hijack_tty
pump.flush()
File "/usr/local/lib/python2.7/site-packages/dockerpty/io.py", line 367, in flush
read = self.from_stream.read(n)
File "/usr/local/lib/python2.7/site-packages/dockerpty/io.py", line 120, in read
return self.fd.recv(n)
File "/usr/local/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 194, in recv
data = self.connection.recv(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1302, in recv
self._raise_ssl_error(self._ssl, result)
File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1172, in _raise_ssl_error
_raise_current_error()
File "/usr/local/lib/python2.7/site-packages/OpenSSL/_util.py", line 48, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('SSL routines', 'ssl3_read_bytes', 'tlsv1 alert protocol version')]
當我創建客戶端,我指定的tls_config
使用tlsv1.2
:
tls_config = docker.tls.TLSConfig(
client_cert=(cert, key),
ssl_version=ssl.PROTOCOL_TLSv1_2,
)
client = docker.Client(base_url=url, timeout=timeout,
tls=tls_config, user_agent=user_agent)
爲什麼我得到這個'tlsv1 alert protocol version'
錯誤,我該如何解決這個問題?
兩個答案是肯定的: '根@ SO1:/#蟒蛇 的Python 2.7.9(默認情況下,2016年6月29日,13時08分31秒) [GCC 4.9.2]上linux2上 鍵入「help 「,」版權「,」信用「或」許可證「以獲取更多信息。 >>>進口SSL >>> ssl.PROTOCOL_TLSv1_2 >>> ssl.PROTOCOL_TLSv1 >>>出口() 根@ SO1:/#OpenSSL的版本 的OpenSSL 1.0.1t 5月3日2016' – cybertextron
我得到了同樣的錯誤;( – KingPin