Я пытаюсь запустить mongo db с помощью докера с помощью следующей команды,
sudo docker run -v /var/lib/mongo:/data/db -v /home/naggappan/mongo.conf:/etc/mongo.conf -p 27017:27017 mongo -f /etc/mongo.conf
И я получаю следующую ошибку в сообщениях системного журнала:
May 2 10:19:42 d-mongo-db-dev.india.ks.net kernel: overlayfs: upper fs needs to support d_type. This is an invalid configuration.
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: overlayfs: upper fs needs to support d_type. This is an invalid configuration.
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: overlayfs: upper fs needs to support d_type. This is an invalid configuration.
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered blocking state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered disabled state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: device vethef7446b entered promiscuous mode
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: IPv6: ADDRCONF(NETDEV_UP): vethef7446b: link is not ready
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered blocking state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered forwarding state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered disabled state
May 2 10:19:43 d-mongo-db-dev.india.ks.net systemd: Started libcontainer container 7adf209c744c2753d46d6bcbe5623d6f0a56ac9bb71cc61922a056563daf4552.
May 2 10:19:43 d-mongo-db-dev.india.ks.net systemd: Starting libcontainer container 7adf209c744c2753d46d6bcbe5623d6f0a56ac9bb71cc61922a056563daf4552.
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: SELinux: mount invalid. Same superblock, different security settings for (dev mqueue, type mqueue)
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: IPv6: ADDRCONF(NETDEV_CHANGE): vethef7446b: link becomes ready
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered blocking state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered forwarding state
May 2 10:19:43 d-mongo-db-dev.india.ks.net dockerd-current: time = "2018-05-02T10:19:43.615971849Z" level=error msg = "containerd: deleting container" error = "exit status 1: \"container 7adf209c744c2753d46d6bcbe5623d6f0a56ac9bb71cc61922a056563daf4552 does not exist\\none or more of the container deletions failed\\n\""
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered disabled state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered disabled state
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: device vethef7446b left promiscuous mode
May 2 10:19:43 d-mongo-db-dev.india.ks.net kernel: docker0: port 1(vethef7446b) entered disabled state
May 2 10:19:43 d-mongo-db-dev.india.ks.net dockerd-current: time = "2018-05-02T10:19:43.822616722Z" level=warning msg = "7adf209c744c2753d46d6bcbe5623d6f0a56ac9bb71cc61922a056563daf4552 cleanup: failed to unmount secrets: invalid argument"
Но если я просто попытаюсь перенаправить порт с помощью следующей команды, он будет работать нормально,
sudo docker run -d -p 27017:27017 mongo
Проблема с приведенной выше командой заключается в том, что служба mongo db недоступна с другого компьютера с помощью таких инструментов пользовательского интерфейса, как Robo3T. соединение происходит, но происходит сбой со следующей ошибкой, так как оно привязано к 127.0.0.1. Чтобы изменить это, мне нужно ввести файл конфигурации, как указано выше, и получить ошибку
May 2 10:12:13 d-mongo-db-dev.india.ks.net journal: 2018-05-02T10:12:13.025+0000 I NETWORK [listener] connection accepted from 15.143.35.10:12729 #3 (2 connections now open)
May 2 10:12:13 d-mongo-db-dev.india.ks.net journal: 2018-05-02T10:12:13.036+0000 I NETWORK [conn3] end connection 15.143.35.10:12729 (1 connection now open)

О проблемах файловой системы: Mongodb предъявляет особые требования к файловой системе своей ОС, как описано в Примечания к производству MongoDB. Вам нужно будет проверить файловую систему хост-системы и при необходимости изменить ее, чтобы убедиться, что она совместима с MongoDB.
О том, как сделать сервис доступным с других машин; вам нужно будет просмотреть параметр конфигурации привязка, чтобы убедиться, что он правильно настроен для доступа на внешних интерфейсах, а также на 127.0.0.1.
Я решил эту проблему с помощью docker-compose в этом yml (измененном из суть Уэслиблисса):
version: '2'
services:
mongodb:
image: mongo:latest
container_name: "mongodb"
environment:
- MONGO_DATA_DIR=/data/db
- MONGO_LOG_DIR=/dev/null
volumes:
- ./data/db:/data/db
ports:
- 27017:27017
command: mongod --smallfiles --logpath=/dev/null # --quiet
После запуска этой конфигурации с помощью docker-compose up -d (при необходимости sudo) у меня есть привязка mongodb к 0.0.0.0. Доступ к нему можно получить с внешнего ip.
Да, я использую ubuntu centos 7, и он совместим. Проблема здесь в том, что мне нужно изменить конфигурации bindIp для доступа со всех машин. Но поскольку я использую докер, мне нужно предоставить файл конфигурации при запуске докера, как указано выше. Но не уверен, что это точная команда, поэтому она не выбирает файл конфигурации и всегда использует файл конфигурации по умолчанию.