Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Dockerpy对cat日志文件执行命令_Macos_Python 2.7_Docker_Dockerpy - Fatal编程技术网

Macos Dockerpy对cat日志文件执行命令

Macos Dockerpy对cat日志文件执行命令,macos,python-2.7,docker,dockerpy,Macos,Python 2.7,Docker,Dockerpy,这看起来很简单,但我正在尝试使用Docker py复制以下Docker命令: docker exec dockerName cat /var/log/foo.log 使用dockerpy,似乎可以实现以下功能: from docker.client import Client from docker.utils import kwargs_from_env cli = Client(**kwargs_from_env()) print kwargs_from_env() name_one

这看起来很简单,但我正在尝试使用Docker py复制以下Docker命令:

docker exec dockerName cat /var/log/foo.log
使用dockerpy,似乎可以实现以下功能:

from docker.client import Client
from docker.utils import kwargs_from_env
cli = Client(**kwargs_from_env())

print kwargs_from_env()

name_one = 'exec_container'
cli.create_container(**{'name': name_one, 'image': 'golang'})
cli.start(name_one)
cli.logs(name_one, stdout=True, stderr=True)  # commenting this line out allows the below to execute perfectly

e = cli.exec_create(container=name_one, cmd='ls /usr/local/bin')
print cli.exec_start(exec_id=e['Id'])
但是,当我运行此命令时,会收到以下错误跟踪:

  File "/Library/Python/2.7/site-packages/docker/utils/decorators.py", line 35, in wrapper
    return f(self, *args, **kwargs)
  File "/Library/Python/2.7/site-packages/docker/api/exec_api.py", line 75, in exec_start
    return self._get_result_tty(stream, res, tty)
  File "/Library/Python/2.7/site-packages/docker/client.py", line 311, in _get_result_tty
    self._raise_for_status(res)
  File "/Library/Python/2.7/site-packages/docker/client.py", line 146, in _raise_for_status
    raise errors.APIError(e, response, explanation=explanation)
docker.errors.APIError: 500 Server Error: Internal Server Error ("http: Hijack is incompatible with use of CloseNotifier")
我真的不确定我做错了什么,或者需要为docker py做些不同的事情。在完成上述操作之后,我可以立即执行命令行命令

所有内容的版本:

docker --version
Docker version 1.10.0, build 590d5108

docker-machine --version
docker-machine version 0.6.0, build e27fb87

pip freeze | grep docker-py
docker-py==1.7.2
Docker py有一个

临时解决方案是实例化一个新客户机,然后允许您执行以下操作:

from docker.client import Client
from docker.utils import kwargs_from_env
cli = Client(**kwargs_from_env())

print kwargs_from_env()
name_one = 'exec_container'

cli.create_container(**{'name': name_one, 'image': 'golang'})
cli.start(name_one)
cli.logs(name_one, stdout=True, stderr=True)

cli2 = Client(**kwargs_from_env())

e = cli2.exec_create(container=name_one, cmd='ls /usr/local/bin')
print cli2.exec_start(exec_id=e['Id'])

在构建docker所依据的Go版本之前,这是必需的。

这看起来类似于应该修复的版本。“你用的是什么版本的Docker?”morxa补充道,“真不敢相信我忘了加那个!”@JimB错误来自Docker本身的Go源代码。我不确定更改Go版本是否能解决问题(请参阅)。@enderland:docker已经编译好了,所以除非您使用docker源代码,否则Go的本地版本并不重要。@JimB啊,duh。向前走。。。今天是星期五,呃(