Kann keine Verbindung zu mongodb in die docker-container
Ich haben ein docker-container läuft, der eine mongodb-Instanz, das sollte ausgesetzt werden, um die host.
Jedoch, wenn ich will, um eine Verbindung vom host in die mongodb-container, wird die Verbindung verweigert.
Dies ist mein Dockerfile:
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:
- Und dies ist die config-Datei für MongoDB, wo ich bind die IP-Adresse 0.0.0.0 explizit als gefunden hier auf SO, dass 127.0.0.1 könnte die Ursache für mein Problem (ist es aber nicht)
systemLog:
destination: file
path: /var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /var/lib/mongodb
net:
bindIp: 0.0.0.0
Den docker-container läuft, aber eine Verbindung über den host ist nicht möglich:
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
Finden Sie die IP-Adresse:
host$ docker inspect 6ec958034a6f |grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
Versuchen zu verbinden:
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 :
connect@src/mongo/shell/mongo.js:234:13
@(connect):1:6
exception: connect failed
Wenn ich ssh in den container, ich kann eine Verbindung zu mongo und eine Liste der test-Datenbank erfolgreich.
- Die zugeordneten port 28001, warum Sie die Verbindung auf port 27017?
- Versuchen
localhost:28001
in einem browser auf Ihrem host - 28001 war ein copy-paste-Fehlers aus einem anderen versuchen. ich ersetzte es mit 27017 in Frage. Und das Problem bleibt das gleiche btw. thx für den Hinweis @mustaccio
- ah, ich habe es. Weil das EXPOSE habe ich eine Verbindung zu localhost statt der IP des Containers. Dieser Weg funktioniert es einwandfrei. Thx user2915097!
- check stackoverflow.com/questions/17588876/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit localhost statt der ip, erlaubt dieser die Verbindung.
Verbinden Sie es mit dem ausgesetzt-port: localhost:27017
Getestet habe ich die Lösung, wie es gesagt wurde, die Kommentare, und es funktioniert.