我有一个使用musl libc的alpine linux系统,因此没有/etc/nsswitch.conf
。
根据这个系统上的tcpdump,net.LookupIP("localhost")
实际上对localhost.a.b.c
进行了查询,其中a.b.c
取自/etc/resolv.conf
中的domain a.b.c
。但是如果我将/etc/nsswitch.conf
与hosts: files dns
相加,它将正确地从/etc/hosts
查找localhost
。
据我所知,没有libc实现在DNS中查找localhost
时尝试向其添加域。那么(a)这样做有什么好的理由吗?或者这是一个bug?(b)有没有一种方法可以在不添加nsswitch.conf的情况下解决它,同时仍然使用名称localhost
?
***编辑***更多详细信息:
ldd ./dnstest
/lib/ld-musl-armhf.so.1 (0x76f2c000)
libc.so => /lib/ld-musl-armhf.so.1 (0x76f2c000)
因此,是的,存在对libc.so
的依赖。我已经在构建命令行中尝试了CGO_ENABLED=1
和CGO_ENABLED=0
。
1条答案
按热度按时间lnxxn5zx1#
因此,目前仍需要
RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf
作为解决方案,以使用alpine图像作为基础图像来运行golang二进制文件。