ubuntu宿主机访问docker容器内的mongodb

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
ubuntu宿主机访问docker容器内的mongodb_第1张图片
可以看到此时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,成功连接
ubuntu宿主机访问docker容器内的mongodb_第2张图片
本地连接云服务器上的docker内的mongo也成功

root@billionaire ~ % telnet 35.103.257.199 27027
Trying 35.103.257.199...
Connected to 35.103.257.199.
Escape character is '^]'.

你可能感兴趣的:(mongodb,mongodb,ubuntu,容器)