gpt4 book ai didi

docker - docker build 上的 yarn 警告

转载 作者:IT老高 更新时间:2023-10-28 12:41:04 24 4
gpt4 key购买 nike

在我的 docker 容器中运行 yarn install 时,它会发出关于没有连接的警告。 https://hub.docker.com/r/tavern/rpg-web/~/dockerfile/


警告您似乎没有互联网连接。尝试使用 --offline 标志以将缓存用于注册表查询。

这可能是什么原因造成的?

最佳答案

由于您的 Dockerfile 有一行读取 RUN yarn(即不使用 yarn 的离线选项),因此 yarn 会尝试确定互联网是否可能会自动可用而不发送任何数据包。

yarn如何查看在线状态?

这是通过使用节点的 os.networkInterfaces() 枚举 docker builder 上下文中的可用网络接口(interface)来完成的。 ,记录在 here .

这又会调用 GetInterfaceAddresses由 libuv 的 uv_interface_addresses 支持. libuv 函数只返回分配了 IP 地址并设置了 IFF_UPIFF_RUNNING 标志的接口(interface)。

要查看实际将哪些地址返回到 Javascript 代码,您可以暂时将此行添加到 Dockerfile:

运行节点 -e 'const os = require("os");常量接口(interface) = os.networkInterfaces(); for (const interface in interfaces) {console.log(interface);常量地址=接口(interface)[接口(interface)]; for (const addr of addrs) {console.log(addr.address)}}'

至少在我的情况下,这只返回了环回地址,yarn 在 1 中明确忽略了该地址。 :

lo
127.0.0.1
::1

但是在 docker 镜像中运行 ifconfig 也会显示一个 eth0 接口(interface)。该接口(interface)的 HWaddr 与运行 docker 守护进程的机器上的 docker0 接口(interface)相匹配。这表明构建器上下文与 docker bridge 网络一起运行。

那么从 libuv 的列表中排除桥接网络的标准是什么?

在我的例子中,docker 网络没有设置 IFF_RUNNING。这并不像 Linux documentation 那样令人惊讶。表示该字段是为了向后兼容。

要验证您的实例是否属于这种情况,您可以使用 this document 中示例程序的略微修改版本。 , 在第一个 printf() 调用之后添加此代码:

printf("RUNNING: %s", (ifa->ifa_flags & IFF_RUNNING) ? "TRUE": "FALSE");

为什么 docker 没有设置 IFF_RUNNING

设置接口(interface)标志是 docker 不会自行处理的低级操作。 Docker 的 libnetwork 委托(delegate)给 netlink 库 here , 但仅限网络链接 sets IFF_UP .

如何解决?

与此问题相关的事件部分是开源的!

netlink 是 changed公开 IFF_RUNNING 以供阅读 - 可以通过进一步更改 netlink 来启用 libnetwork(以及 docker)来设置该标志。

libuv 也可以在 Github issue on the subject 之后进行扩展。 .这样一个新的 API 最终可以在 node.js 和 yarn 中使用,无论分配的 IP 地址和 IFF_RUNNING 状态如何,都会列出接口(interface)。

关于docker - docker build 上的 yarn 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40186104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com