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.
何が原因でしょうか?
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.
何が原因でしょうか?
Dockerfile には読み取り行があるRUN yarn
(つまり、yarn のオフライン オプションを使用していない) ため、yarn は、パケットを送信せずに、インターネットが利用可能かどうかを自動的に判断しようとします。
os.networkInterfaces()
これは、ノードのを使用して docker ビルダー コンテキストで利用可能なネットワーク インターフェイスを列挙することによって行われます。
GetInterfaceAddresses
これは、libuv によってサポートされている呼び出しを順番に呼び出します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
インターフェースも表示されました。このインターフェイスのは、docker デーモンを実行しているマシン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 が拡張される可能性があります。IFF_RUNNING
このような新しい API は、割り当てられた IP アドレスと状態に関係なくインターフェイスをリストする node.js と yarn で最終的に使用される可能性があります。