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:5000
No 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.52
172.17.0.51
コマンド ラインで Node.js を実行すると別の正しい IP アドレスが返されるのに、Node.js アプリケーションが間違った IP アドレスを返すのはなぜですか?
更新: docker-machine と DO を使用せずに Jenkins マシンでコンテナーをローカルに実行すると、すべて正常に動作します。