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
仅表示列出的参数是“关键字参数”,因此对于,它使用关键字=值的形式以任意顺序接收这些参数(或“参数”)
:
(bool)–包括stdout李>stdout
(bool)–包括stderrstderr
(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语句应该在您启动容器之后出现,这样您至少有一些日志内容。我确实尝试过,打印时日志是空的。(两种方法)有人知道这种方法吗?