dockerfile
from ubuntu
expose 22
expose 20001
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get -y clean
RUN apt-get -y update
RUN apt-get install --assume-yes apt-utils
RUN apt-get -y install -y vim
RUN apt-get -y install openssh-server
RUN apt-get -y install libcurl4 openssl
RUN apt-get -y install wget
#install mongodb
RUN wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-4.4.12.tgz
RUN tar -zxvf mongodb-linux-x86_64-ubuntu2004-4.4.12.tgz
RUN mv mongodb-linux-x86_64-ubuntu2004-4.4.12/bin/* /usr/local/bin
RUN mkdir -p /var/lib/mongo
RUN mkdir -p /var/log/mongodb
RUN chown `whoami` /var/lib/mongo
RUN chown `whoami` /var/log/mongodb
ENTRYPOINT ["mongod","--dbpath","/var/lib/mongo","--logpath","/var/log/mongodb/mongod.log"]
docker run -itd -p 27027:27017 ubuntu:mongo
启动容器
使用telnet连接,telnet 127.0.0.1 27027 发现无法连接,查阅文章发现是阿里云的172ip网段和docker0虚拟网卡的172网断冲突,按照网友的提示进行了修改
再次telnet 127.0.0.1 27027
可以看到此时tcp已经发送了握手消息,但是docker容器内的mongodb收到了握手请求之后把tcp给断开了,“Connection closed by foreign host”说明对端主动拒绝了tcp握手请求,这个时候就应该从mongodb找问题了。
进到docker内 mongo --host 127.0.0.1 --port 27017,连接正常;这就说明了应该是mongodb主动拒绝了外部ip的访问请求,于是查询怎样开启mongodb允许远程连接
查阅得到只要在mongodb启动的时候加上–bind_ip_all参数即可。
修改ENTRYPOINT 为ENTRYPOINT [“mongod”,“–dbpath”,“/var/lib/mongo”,“–logpath”,“/var/log/mongodb/mongod.log”, “–bind_ip_all”]
再次telnet,成功连接
本地连接云服务器上的docker内的mongo也成功
root@billionaire ~ % telnet 35.103.257.199 27027
Trying 35.103.257.199...
Connected to 35.103.257.199.
Escape character is '^]'.
版权声明:本文为Zx13170918986原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。