Запуск MongoDB в Docker контейнере

Иногда требуется запустить СУБД MongoDB на сервере. Ниже описана инструкция, как запустить MongoDB через Docker.

Для начала создайте сеть, в которой будет находится СУБД MongoDB со статическим IP адресом. Сеть нужно создать, т.к. стандартная сеть docker не дает возможности установить статический IP адрес у контейнера.

docker network create -d bridge --subnet=172.20.0.0/16 dockernet -o "com.docker.network.bridge.name"="dockernet"

Скачайте официальный образ MongoDB:

docker pull mongo:3.6.1-jessie

Создайте docker volume для базы данных MongoDB:

docker volume create mongodb_config
docker volume create mongodb_data

Создание пользователя администратора

Запустите mongo без авторизации:

docker run -d --name mongodb_noauth --ip=172.20.0.6 --log-driver=journald --network="dockernet" -v mongodb_config:/data/configdb -v mongodb_data:/data/db mongo:3.6.1-jessie

Подключитесь к консоли управления MongoDB:

docker exec -it mongodb_noauth mongo admin

Выполните команду:

use admin
db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [{ role: 'root', db: 'admin' }] })
exit

Остановите и удалите контейнер:

docker stop mongodb_noauth
docker rm mongodb_noauth

После выполнения данной команды будет создан администратор:

Логин: jsmith
Пароль: some-initial-password

Создание рабочего контейнера MongoDB

После того, как база и пользователь были созданы, запустите образ с пробросом портов и папок:

docker run -d --name mongodb --log-driver=journald --restart=unless-stopped --ip=172.20.0.6 --network="dockernet" -v mongodb_config:/data/configdb -v mongodb_data:/data/db mongo:3.6.1-jessie --auth

Параметры —restart:
unless-stopped — будет останавливаться при перезапуске системы
always — будет автоматически запускаться при старте системы

MongoDB будет запущен на 172.20.0.6:27017

Запуск и остановка

Остановка контейнера:

docker stop mongodb

Запуск контейнера:

docker start mongodb

Удаление контейнера:

docker rm mongodb

Создание базы данных в MongoDB

Подключитесь к mongo client:

docker exec -it mongodb mongo admin

Авторизуйтесь в системе:

db.auth('jsmith', 'some-initial-password');

Создайте тестовую базу и коллекцию в ней:

use test
db.createCollection('test');

Читать также

  1. Установка Docker на Ubuntu 18.04
  2. Установка Docker на Centos 7
  3. Установка Ubuntu Server 16.04 на VirtualBox
  4. Docker How To