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

时间:2016-01-07 12:18:56

标签: docker erlang relx

这很令人尴尬,但我完全陷入困境,浪费了今天早上更好的一部分。我有一个由relx创建的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().退出。

erl_pipes中没有/tmp

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 ()

我已经没有想法了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

找到了解决方法,设法通过覆盖默认的“哑”终端泊坞机集来使^ G工作:

export TERM=xterm

在此^ G工作之后,启动远程shell工作,我是一个快乐的露营者!很高兴知道为什么attachremote_console命令都不起作用。