0

Docker マシンを使用して DigitalOcean にドロップレットを作成しました。

2 つのコンテナーを実行し、Jenkins からこのようにリンクする場合:

/bin/bash/eval "$(docker-machine env deployment)"
/bin/bash -c "docker run -d -t --name container1 -p 5000:5000 image1"
/bin/bash -c "docker run -d -t --name container2 -p 5001:5001 --link container1:container1 image2"

そして、docker inspect container1 | grep "IPAddress"私は得る172.17.0.51。しかし、Node.js アプリケーションを container2 で実行すると 、そのパブリック IP (DO ドロップレットの) からcontainer2 を呼び出すprocess.env.CONTAINER1_PORT_5000_TCP_ADDRと解決され 、返されます。172.17.0.7:5000No route to host

container2にexec入って実行するnode process.env.CONTAINER1_PORT_5000_TCP_ADDRと、 が返されます172.17.0.51

別のユーザーを使用してホストに ssh すると、代わりにdocker inspect container2 | grep "IPAddress"も返されます。172.17.0.52172.17.0.51

コマンド ラインで Node.js を実行すると別の正しい IP アドレスが返されるのに、Node.js アプリケーションが間違った IP アドレスを返すのはなぜですか?

更新: docker-machine と DO を使用せずに Jenkins マシンでコンテナーをローカルに実行すると、すべて正常に動作します。

4

0 に答える 0