带有控制台应用程序的Docker容器会无限次插入命令

时间:2019-01-12 18:25:58

标签: docker dockerfile docker-container docker-image docker-entrypoint

我有一个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

如果我使用-d运行使用上述Dockerfile构建的容器,一切正常:

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>
...

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

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

1 个答案:

答案 0 :(得分:1)

我通过将-it传递给docker run命令解决了我的问题。

所以现在我使用以下命令运行容器:

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

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

stdin_open: true
tty: true

感谢@ user268396