Tôi đã xây dựng một thùng chứa docker chạy một thể hiện mongodb, mà phải được tiếp xúc với máy chủ. Tuy nhiên, khi tôi muốn kết nối từ máy chủ vào thùng chứa mongodb, kết nối sẽ bị từ chối.Không thể kết nối với mongodb trong ngăn chứa docker
Đây là Dockerfile tôi:
FROM mongo:latest
RUN mkdir -p /var/lib/mongodb && \
touch /var/lib/mongodb/.keep && \
chown -R mongodb:mongodb /var/lib/mongodb
ADD mongodb.conf /etc/mongodb.conf
VOLUME [ "/var/lib/mongodb" ]
EXPOSE 27017
USER mongodb
WORKDIR /var/lib/mongodb
ENTRYPOINT ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"]
CMD ["--quiet"]
/etc/mongodb.conf:
Và đây là config-file cho MongoDB, nơi tôi ràng buộc IP 0.0.0.0 rõ ràng như được tìm thấy here on SO, rằng 127.0.0.1 có thể là nguyên nhân gốc rễ của vấn đề của tôi (nhưng không phải là)
systemLog:
destination: file
path: /var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /var/lib/mongodb
net:
bindIp: 0.0.0.0
Container Docker đang chạy, nhưng một kết nối từ máy chủ là không thể:
host$ docker run -p 27017:27017 -d --name mongodb-test mongodb-image
host$ docker ps
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6ec958034a6f mongodb-image "/usr/bin/mongod --co" 4 seconds ago Up 3 seconds 0.0.0.0:27017->27017/tcp mongodb-test
Tìm IP-Địa chỉ:
host$ docker inspect 6ec958034a6f |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
Cố gắng kết nối:
host$ mongo 172.17.0.2:27017
MongoDB shell version v3.4.0
connecting to: mongodb://172.17.0.2:27017
2016-12-16T15:53:40.318+0100 W NETWORK [main] Failed to connect to 172.17.0.2:27017 after 5000 milliseconds, giving up.
2016-12-16T15:53:40.318+0100 E QUERY [main] Error: couldn't connect to server 172.17.0.2:27017, connection attempt failed :
[email protected]/mongo/shell/mongo.js:234:13
@(connect):1:6
exception: connect failed
Khi tôi ssh vào container, tôi có thể kết nối với mongo và liệt kê cơ sở dữ liệu thử nghiệm thành công.
Bạn đã chỉ định cổng được ánh xạ là 28001, tại sao bạn kết nối với cổng 27017? – mustaccio
Thử 'localhost: 28001' trong trình duyệt trên máy chủ của bạn – user2915097
28001 là lỗi sao chép-dán từ lần thử khác. tôi đã thay thế nó bằng 27017 trong câu hỏi. Và vấn đề vẫn là cùng một btw. thx cho gợi ý @mustaccio – delete