首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Dockerpy对cat日志文件执行命令

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

Stack Overflow用户
提问于 2016-03-15 16:52:21
回答 1查看 255关注 0票数 2

这似乎很简单,但我正在尝试使用Docker复制以下Docker命令:

代码语言:javascript
运行
复制
docker exec dockerName cat /var/log/foo.log

使用dockerpy,如下所示似乎是可行的:

代码语言:javascript
运行
复制
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'])

但是,当我运行它时,我会收到以下错误跟踪:

代码语言:javascript
运行
复制
  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")

我不太清楚我在做什么不对,或者需要对码头-py采取不同的做法。在上面的命令之后,我可以立即执行命令行命令。

所有内容的版本:

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-15 22:05:40

Docker有一个这种情况下的错误或意外行为

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

代码语言:javascript
运行
复制
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'])

这将是必需的,直到Go版本的码头是针对包括这个错误修复

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36017397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档