0

我有一个 Dockerfile 构建包含自定义控制台应用程序的图像:

FROM ubuntu:bionic

# Some non-relevant steps...

CMD  bin/my-console-app

my-console-app是一个简单的控制台应用程序,当它运行时,它通常为您提供插入命令的可能性。

例如

./my-console-app
my-console> some-command
Some result
my-console> some-other-command
Some other result

如果我使用上面的 Dockerfile 运行我构建的容器-d,一切都很好:

docker run --name my-app --network host -d myapp

使用网络我可以看到控制台应用程序正在正确运行。

但是,如果我在没有 的情况下运行它-d,例如:

docker run --name my-app --network host myapp

然后我的终端会发疯,就像有人不断按 ENTER 一样:

my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console> 
my-console>
...

这将永远持续下去。我无法向控制台应用程序插入任何命令。

为什么会这样?我应该怎么做才能防止这种情况发生?

4

1 回答 1

1

我通过传递-itdocker run命令解决了我的问题。

所以现在我使用以下方法运行我的容器:

docker run --name my-app --network host -it myapp

编辑:如果使用 docker-compose,要解决此问题,请为服务指定这两个选项:

stdin_open: true
tty: true

谢谢@user268396

于 2019-01-12T19:10:14.767 回答