14.10 Erlang
Erlang是一种用来构建大规模弹性、实时、高并发、高可用系统的编程语言,被广泛应用于电信、银行、电子商务和即时消息领域。Erlang的运行时系统内置支持并发、分布式和容错机制。Erlang由爱立信所辖的CS-Lab于1987年开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。

1.使用官方镜像
可以使用erlang镜像,直接进入Erlang交互命令行Eshell:
- $ docker run -it --rm erlang:latest
- Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
- Eshell V7.3.1 (abort with ^G)
- 1> uptime().
- 3 minutes and 3 seconds
- ok
- 2>
可以使用ctl+G进入任务切换模式,其中j为列出所有任务:
- User switch command
- --> j
- 1* {shell,start,[init]}
- --> q
- $ docker run -it --rm -h erlang.local erlang erl -name allen
- Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]
- Eshell V7.3.1 (abort with ^G)
- (allen)1> erlang:system_info(otp_release).
- "18"
- (allen)2>
- User switch command
- --> q
2.直接运行Erlang脚本
可以直接使用docker run指令,通过escript运行Erlang脚本。下面以斐波那契数列作为例子进行讲解。
首先,新建fab.erl文件:
- #!/usr/bin/env escript
- %% -*- erlang -*-
- main([String]) ->
- try
- N = list_to_integer(String),
- F = fac(N),
- io:format("factorial ~w = ~w\n", [N,F])
- catch
- _:_ ->
- usage()
- end;
- main(_) ->
- usage().
- usage() ->
- io:format("usage: factorial integer\n"),
- halt(1).
- fac(0) -> 1;
- fac(N) -> N * fac(N-1).
保存后,使用docker run指令运行:
- $ docker run -it --rm --name erlang-inst1 -v "$PWD":/usr/src/myapp -w /usr/src/
- myapp erlang escript fab.erl 5
- factorial 5 = 120
可见已输出factorial 5=120计算结果。
