golang对本地主机的处理

mgdq6dx1  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(150)

我有一个使用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.confhosts: 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=1CGO_ENABLED=0

lnxxn5zx

lnxxn5zx1#

因此,目前仍需要RUN [ ! -e /etc/nsswitch.conf ] && echo 'hosts: files dns' > /etc/nsswitch.conf作为解决方案,以使用alpine图像作为基础图像来运行golang二进制文件。

相关问题