连接到Docker容器中正在运行的Erlang应用程序版本

这是尴尬,但我完全卡住,浪费了今天上午更好的部分。 我有一个由relx创build的Erlang应用程序版本,部署并在Docker容器中运行。 我需要到运行的节点上的shell,但我没有这样做。 这是发生了什么事情:

$ docker exec -it 770b497d7f27 /bin/bash [root@ff /]# /app/bin/ff Usage: ff {start|start_boot <file>|foreground|stop|restart|reboot|pid|ping|console|console_clean|console_boot <file>|attach|remote_console|upgrade|escript|rpc|rpcterms} [root@ff /]# /app/bin/ff ping pong [root@ff /]# /app/bin/ff attach Can't access pipe directory /tmp/erl_pipes/ff@127.0.0.1/: No such file or directory [root@ff /]# /app/bin/ff remote_console Eshell V7.1 (abort with ^G) (remshfbfbd4dd-ff@127.0.0.1)1> ^G Eshell V7.1 (abort with ^G) (remshfbfbd4dd-ff@127.0.0.1)1> 

就是这样 – 我可以用q().退出q().

/tmp没有erl_pipes

Control-G似乎被Docker捕获。 我无法进入“用户切换命令”菜单。

即使运行一个纯粹的Erlang shell也不是那么容易:

 [root@ff /]# /app/erts-7.1/bin/erl {"init terminating in do_boot",{'cannot get bootfile','/app/bin/start.boot'}} Crash dump is being written to: erl_crash.dump...done init terminating in do_boot () 

我已经用完了想法。 任何帮助,将不胜感激。

find了一个解决方法,设法通过覆盖默认的“哑”terminaldocker集来获得^ G:

 export TERM=xterm 

在^ G工作之后,启动一个远程shell就可以工作了,而且我是一个快乐的露营者! 很高兴知道为什么既不attach也不remote_console命令工作。