我是docker的新手,我刚刚创建了MongoDB和Node.js容器。
首先,我制作并运行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
好吧,如果我将nodejs服务器作为docker run <server-name>
运行,
它打印出以下错误。
> urlcom@0.0.0 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 :(得分:0)
您的mongo docker容器必须正确链接到服务器docker容器。请注意,必须首先命名mongo容器,因为--link
的参数引用了NAME,而不是图像。
运行mongo docker:
docker run --name db mongo
运行Web服务器时正确引用mongo容器
docker run --name web --link db:db <server-name>