2017-04-12 60 views
1

我在使用'桥接'网络的docker容器(节点:7.8.0)中有一个nodejs应用程序。我用的是卡桑德拉驱动程序与卡桑德拉服务器连接,但初始化连接时,它会引发超时异常:我无法从Docker容器中的nodejs应用程序连接到cassandra

Error: The host 172.16.210.101:9042 did not reply before timeout 12000 ms 
    at OperationTimedOutError.DriverError (node_modules/cassandra-driver  /lib/errors.js:14:19) 
    at new OperationTimedOutError (node_modules/cassandra-driver/lib/errors.js:104:33) 
    at Connection.onTimeout (node_modules/cassandra-driver/lib/connection.js:645:20) 
    at Timeout._onTimeout (node_modules/cassandra-driver/lib/connection.js:620:10) 
    at ontimeout (timers.js:386:14) 
    at tryOnTimeout (timers.js:250:5) 
    at Timer.listOnTimeout (timers.js:214:5) 

从容器内,我可以ping服务器卡桑德拉,做一个telnet连接。

使用“主机”网络工作,并在“标准”环境中执行应用程序。

任何帮助表示感谢。

+2

你可以显示你的docker命令吗? –

+0

我使用* sudo docker run -it -rm -name project -p 8080:8080 -v“$ PWD”:/ usr/src/app -w/usr/src/app node:7.8.0 bash脚本。 sh *,其中script.sh是* npm install *和* npm start * – JSierra

回答

1

好吧,我找到了解决方案。

我的主机的MTU是1450,docker0默认使用1500.它会产生一个错误。

因此,我更改了泊坞窗的MTU,它的工作原理。

我用的是Debian主机,我跟着下面的步骤:

复制服务文件:

cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service 

然后,编辑 “ExecStart” 路线是这样的:

ExecStart=/usr/bin/dockerd -H fd:// --mtu=1400 

最后,重新启动泊坞窗:

sudo systemctl daemon-reload 
sudo systemctl restart docker 

来源: https://rahulait.wordpress.com/2016/02/28/modifying-default-mtu-for-docker-containers/

相关问题