2016-10-04 9 views
0

私はドッカーには新しく、MongoDBとNode.jsコンテナを作成しました。Docker:mongoのコンテナに接続すると、EHOSTUNREACHに接続します。

まず、mongoDBコンテナを作成して実行しました。

$ docker run mongo 
2016-10-04T07:41:12.864+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=f3b51681966e 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] db version v3.2.10 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] git version: 79d9b3ab5ce20f51c272b4411202710a082d0317 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.1t 3 May 2016 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] allocator: tcmalloc 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] modules: none 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] build environment: 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten]  distmod: debian81 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten]  distarch: x86_64 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten]  target_arch: x86_64 
2016-10-04T07:41:12.865+0000 I CONTROL [initandlisten] options: {} 
2016-10-04T07:41:12.868+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=1G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 
2016-10-04T07:41:13.080+0000 I FTDC  [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data' 
2016-10-04T07:41:13.080+0000 I NETWORK [HostnameCanonicalizationWorker] Starting hostname canonicalization worker 
2016-10-04T07:41:13.145+0000 I NETWORK [initandlisten] waiting for connections on port 27017 

下記のようにうまくいきます。

> docker ps 
    CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS    NAMES 
    f3b51681966e  mongo    "/entrypoint.sh mongo" 16 hours ago  Up 11 minutes  27017/tcp   drunk_rosalind 

さてさて、私はdocker run <server-name>、 としてnodejsサーバーを実行した場合ときにそれは以下のエラーを出力します。

> [email protected] start /usr/src/app 
> node ./bin/www 


/usr/src/app/node_modules/mongodb/lib/server.js:242 
     process.nextTick(function() { throw err; }) 
            ^
Error: connect EHOSTUNREACH 172.17.0.5:27017 
    at Object.exports._errnoException (util.js:1036:11) 
    at exports._exceptionWithHostPort (util.js:1059:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14) 

私のapp.jsソースはhttp://pastebin.com/zR3ErQdfです。

誰かが何か問題を見つけ出すことができますか?

答えて

0

あなたのmongoドッカーコンテナーは、サーバードッカーコンテナーに正しくリンクされている必要があります。 --linkの引数はイメージではなくNAMEを参照するため、mongoコンテナの名前を最初に指定する必要があります。

実行モンゴドッキングウィンドウ:https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#/communication-across-links

docker run --name web --link db:db <server-name>

リファレンスWebサーバーを実行しているとき

docker run --name db mongo

が正しくMongoのコンテナを参照

関連する問題