首页 > 解决方案 > Spotify docker 客户端:如何获取已启动容器的标准输出和标准错误?

问题描述

我知道我可以创建带有无限循环的容器:

val containerConfig = ContainerConfig.builder()
    .image(imageName)
    .cmd("sh", "-c", "while :; do sleep 1; done")
    .build()
val container = docker.createContainer(containerConfig)
docker.startContainer(container.id())

docker.execCreate然后使用and在这个容器中执行一个命令docker.execStart。在这种情况下获取 stdout 和 stderr 不是问题。

但我想知道我是否可以让事情变得更简单。我想这样执行command

val containerConfig = ContainerConfig.builder()
    .image(imageName)
    .cmd(command)
    .build()
val container = docker.createContainer(containerConfig)
docker.startContainer(container.id())

并访问标准输出和标准错误。可能吗?

标签: dockerspotify-docker-client

解决方案


好的,有一种方法可以做到这一点:

val containerConfig = ContainerConfig.builder()
    .image(imageName)
    .cmd(command)
    .build()
val container = docker.createContainer(containerConfig)
docker.startContainer(container.id())
docker.waitContainer(container.id())
val logs = docker.logs(container.id(), stdout(), stderr())
val output = logs.readFully()

推荐阅读