Skip to content

快速参考

  • 由……维护: (注:原文中“Maintained by:”后面应该会有具体的维护者信息,若有完整内容,翻译会更加准确。这里仅根据给定的部分进行了翻译。)
    Docker 社区

  • 哪里可以获得帮助:
    Docker 社区 Slack、Server Fault、Unix & Linux 或 Stack Overflow

支持的标签及各自的 Dockerfile 链接

快速参考(续)

什么是 Erlang?

Erlang 是一种编程语言,用于构建具有高可用性要求的大规模可扩展软实时系统。它的一些应用领域包括电信、银行、电子商务、计算机电话和即时通讯。Erlang 的运行时系统对并发、分布式和容错具有内置支持。

wikipedia.org/wiki/Erlang(编程语言)

logo

如何使用此图像

将其作为 REPL 运行

➸ docker run -it --rm erlang
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.0  (abort with ^G)
1> uptime().
3 seconds
ok
2>                                 % use Ctrl+G to call the shell switch
User switch command
 --> ?
  c [nn]            - connect to job
  i [nn]            - interrupt job
  k [nn]            - kill job
  j                 - list all jobs
  s [shell]         - start local shell
  r [node [shell]]  - start remote shell
  q                 - quit erlang
  ? | h             - this message
 --> q
➸ docker run -it --rm -h erlang.local erlang erl -name snode@erlang.local
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V9.0  (abort with ^G)
(snode@erlang.local)1> erlang:system_info(otp_release).
"20"
(snode@erlang.local)2>
User switch command
--> q

运行一个单一的 Erlang escript 脚本

$ docker run -it --rm --name erlang-inst1 -v "$PWD":/usr/src/myapp -w /usr/src/myapp erlang escript your-escript.erl

图像变体

erlang 图像有多种类型,每种都针对特定的用例而设计。

erlang:<version>

这是事实上的映像。如果您不确定自己的需求是什么,您可能想要使用这个。它被设计为既可以用作一次性容器(挂载您的源代码并启动容器以启动您的应用程序),也可以作为构建其他映像的基础。

此标签基于 buildpack-depsbuildpack-deps 是为在其系统上有许多镜像的 Docker 普通用户设计的。按设计,它具有大量极为常见的 Debian 软件包。这减少了从其派生的镜像需要安装的软件包数量,从而减小了系统上所有镜像的总体大小。

erlang:<version>-slim

此图像不包含默认标签中包含的常见软件包,仅包含运行 erlang 所需的最小软件包。除非您在仅会部署 erlang 图像且存在空间限制的环境中工作,否则我们强烈建议使用此存储库的默认图像。

erlang:<version>-alpine

此图像基于流行的 Alpine Linux 项目,可在 alpine 官方镜像中获取。Alpine Linux 比大多数发行版基础镜像(约 5MB)小得多,因此总体上会生成更精简的镜像。

当您首要关注的是最终图像大小尽可能小的时候,此变体是有用的。需要注意的主要警告是,它确实使用 musl libc 而不是 glibc 及相关库,因此软件往往会根据其对 libc 要求/假设的深度而遇到问题。有关可能出现的问题以及使用基于 Alpine 的图像的一些利弊比较的更多讨论,请参阅此 Hacker News 评论线程。

为尽量减小镜像大小,在基于 Alpine 的镜像中通常不会包含其他相关工具(例如 gitbash )。以该镜像为基础,在您自己的 Dockerfile 中添加您需要的内容(如果您不熟悉如何安装软件包,请参阅 alpine 镜像说明中的示例)。

许可证

查看此映像中所包含软件的许可证信息。

  1. 从 OTP 18 及以上版本开始,Erlang 依据 Apache License 2.0 发布。
  2. 前面的内容是根据 Erlang 公共许可证(EPL)发布的。EPL 是 Mozilla 公共许可证(MPL)的衍生作品。它包含与 MPL 不同的条款,主要在司法管辖权方面。该许可证是根据瑞典法律制定的。

与所有 Docker 镜像一样,这些镜像可能还包含其他可能受其他许可证约束的软件(例如来自基础发行版的 Bash 等,以及所包含的主要软件的任何直接或间接依赖项)。

一些能够自动检测到的额外许可信息可能会在 repo-info 存储库的 erlang/ 目录中找到。

对于任何预构建图像的使用,图像用户有责任确保对此图像的任何使用都符合其中包含的所有软件的任何相关许可。