Python Docker API需要知道将(**kwargs)附加到容器的语法

Python Docker API需要知道将(**kwargs)附加到容器的语法,python,docker,dockerpy,Python,Docker,Dockerpy,我正在尝试在如下容器上运行命令: # container started container = PythonDockerAPIs.runContainerWithoutLogs(alpineImage, 'tail -f /dev/null', detach=True) #execute the command cmd1 = container.exec_run('ls -ltr',stream=True, detach=True) 是否有一种方法可以使用attach(**kwargs)将日

我正在尝试在如下容器上运行命令:

# container started
container = PythonDockerAPIs.runContainerWithoutLogs(alpineImage, 'tail -f /dev/null', detach=True)
#execute the command
cmd1 = container.exec_run('ls -ltr',stream=True, detach=True)
是否有一种方法可以使用
attach(**kwargs)
将日志附加到此容器并在以后打印日志


**kwargs
仅表示列出的参数是“关键字参数”,因此对于,它使用
关键字=值的形式以任意顺序接收这些参数(或“参数”)

  • stdout
    (bool)–包括stdout
  • stderr
    (bool)–包括stderr
  • (bool)–作为迭代器逐步返回容器输出 由字符串组成,而不是单个字符串
  • 日志
    (bool)–包括容器以前的输出
要调用此函数,请执行以下操作:

logs = container.attach(stdout=True, stderr=True, stream=True, logs=True)
请注意,文档还说明该函数是
attach
函数的包装器,因此您可以使用该函数而不是
attach

编辑: 完整的用法示例:

import docker
client = docker.from_env()
container = client.containers.run('hello-world', detach=True)

# method 1
print(container.logs())

# method 2
logs = container.attach(stdout=True, stderr=True, stream=False, logs=True)
print(logs)

我尝试了这个方法,当我打印日志时,我看到这个错误@user2511126,文档中说如果
stream=True
,返回值是输出字符串的迭代器,因此您需要迭代输出,或者设置
stream=False
,或者您可以使用替代函数:for line in logs:print“-”+行我尝试了这个,但它没有打印任何内容,并且永远挂起。@user2511126查看我的编辑。我认为logs语句应该在您启动容器之后出现,这样您至少有一些日志内容。我确实尝试过,打印时日志是空的。(两种方法)有人知道这种方法吗?