在yarn install我的docker容器内运行时,它会发出关于没有连接的警告.
https://hub.docker.com/r/tavern/rpg-web/~/dockerfile/
warning You don't appear to have an internet connection. Try the --offline flag to use the cache for registry queries.
可能是什么导致了这个?
Not*_*ese 16
由于您的Dockerfile具有行读数RUN yarn(即不使用纱线的离线选项),因此纱线会尝试确定互联网是否可能自动可用而不发送任何数据包.
这是通过使用节点来枚举docker builder上下文中的可用网络接口来完成的os.networkInterfaces(),这将在此处记录.
这反过来调用GetInterfaceAddresseslibuv支持的uv_interface_addresses.libuv函数仅返回分配了IP地址IFF_UP且IFF_RUNNING设置了标志的接口.
要查看哪些地址实际返回到Javascript代码,您可以暂时将此行添加到Dockerfile:
RUN node -e 'const os = require("os"); const interfaces = os.networkInterfaces(); for (const interface in interfaces) {console.log(interface); const addrs = interfaces[interface]; for (const addr of addrs) {console.log(addr.address)}}'
至少在我的情况下,这只返回了回送地址,在1中明确忽略了纱线:
lo
127.0.0.1
::1
但是ifconfig在docker图像中运行也显示了一个eth0界面.在HWaddr这个界面相匹配的的docker0机器上运行接口泊坞窗守护进程.这表明构建器上下文与docker bridge网络一起运行.
就我而言,docker网络没有设置IFF_RUNNING.这并不奇怪,因为Linux文档说这个字段是为了向后兼容.
要在您的实例中验证这种情况,您可以在本文档中使用稍微修改过的示例程序版本,在第一次printf()调用后添加此代码:
printf("RUNNING: %s", (ifa->ifa_flags & IFF_RUNNING) ? "TRUE" : "FALSE");
IFF_RUNNING?设置接口标志是docker不处理自身的低级操作.Docker的libnetwork 在这里委托给netlink库,但netlink只设置IFF_UP.
这个问题的相关活动部分是开源的!
netlink被更改为暴露IFF_RUNNING以供阅读 - 有可能通过进一步更改为netlink来启用libnetwork(以及docker)来设置该标志.
或者,可以在关于该主题的Github问题之后扩展libuv .这样的新API最终可以用在node.js和yarn中,无论分配的IP地址和IFF_RUNNING状态如何,都会列出接口.
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |