问题
我正在尝试创建一个带有Haskell应用程序的Docker镜像。然而,在Docker容器中运行的应用程序中,其他容器的主机名域名解析失败(但我可以使用wget
/ping
访问其他容器,并且它们的主机名正确解析)。
为了找到根本原因,我尝试手动解析主机名(使用Network.DNS
包)并仅在servant-client
中使用IP地址。然而,这只产生了晦涩的错误消息:
Network.BSD.getProtocolByName: does not exist (no such protocol name: udp)
我认为我在我的docker镜像中缺少一些软件包。我已经尝试安装libc6-compat
,但没有成功(使用Debian的libc6
编译了Haskell应用程序)。此外,/etc/protocols
包含正确的条目。还有什么是docker镜像中缺少的呢?
Docker镜像
我用于运行应用程序的Docker镜像是alpine:3.6
- 整个Dockerfile,内容不多。这是与用于构建应用程序的镜像不同的镜像(它小约20倍)。
我用于构建Haskell应用程序的Docker镜像是基于debian:stretch
。 Dockerfile。
完整的源代码和构建说明在此处可用(Angular部分可以跳过):
https://github.com/carbolymer/blockchain/tree/0b041875f71b2a09dc8568ee7b0cc22460fd5624
strace
吗? - melpomenestrace -p 1
):strace: attach: ptrace(PTRACE_ATTACH, 1): Operation not permitted
。 - carbolymer