docker - 在 Docker 中,绑定挂载 nscd 套接字会破坏 gethostbyname
问题描述
我有一个 dockerized 应用程序,它需要来自 docker 主机的 nscd 套接字。所以我在运行时绑定安装套接字。DNS, getpwnam
,getpwuid
等都可以正常工作。奇怪的是,我发现这gethostbyname
不再起作用了。例如:
docker run --rm -v /var/run/nscd/socket:/var/run/nscd/socket ubuntu hostname -i
hostname: Name or service not known
但是,在 alpine 下,它确实有效:
docker run --rm -v /var/run/nscd/socket:/var/run/nscd/socket alpine hostname -i
172.18.85.4
有谁知道为什么会中断gethostbyname
以及如何解决?
更新:如果我在主机和容器上使用相同的 glibc,它仍然会中断:
ldd --version
ldd (GNU libc) 2.17
docker run --rm centos ldd --version
ldd (GNU libc) 2.17
docker run --rm -v /var/run/nscd/socket:/var/run/nscd/socket centos hostname -i
hostname: Name or service not known
解决方案
将 LOCALDOMAIN 设置为空有效:
docker run -it --rm -v /var/run/nscd/socket:/var/run/nscd/socket --env LOCALDOMAIN='' centos hostname -i
推荐阅读
- r - as.data.frame.default(x[[i]], optional = TRUE) 中的错误:无法将“公式”类强制转换为 data.frame
- reactjs - React-Native 中的 TextInput 奇怪行为
- typescript - 从类型中删除未定义
- javascript - 如何在 JavaScript 中将数组 api 响应转换为 json
- amazon-web-services - 有没有办法使用 lambda 将数据从 S3 导出到 Amazon Aurora 无服务器?
- .net - 在 WPF 应用程序中拥有多个 D3DImage(比如 5 个)元素是个好主意吗?
- python - 当 force_login() 在详细视图上时,Django Rest Framework 在单元测试中给出 302?
- validation - XBRL 验证工具
- flutter - 如何在颤动中将行和列的大小设置为其父小部件?
- c# - 每次迭代或循环浏览文档列表时,如何创建新的 PDF 文件?