MongoDB в Docker: пошаговое руководство для начинающих.

Если вы хотите легко и быстро запустить базу данных MongoDB на своем компьютере или сервере, использование Docker — отличный выбор.

В этой статье я расскажу, что такое Docker и MongoDB, почему их сочетание удобно, а также подробно объясню, как развернуть MongoDB внутри контейнера Docker.

Что такое Docker и почему его используют

Docker — платформа для создания, запуска и управления контейнерами. Контейнеры позволяют запускать приложения и базы данных изолированно друг от друга, что облегчает их настройку и масштабирование.

О том, как установить Docker, есть отдельная статья. В рамках этой инструкции предполагается, что Docker уже установлен и готов к использованию.

Что такое MongoDB и зачем она нужна

MongoDB — это современная база данных, основанная на принципе NoSQL. Она отлично подходит для хранения больших объемов данных, особенно когда структура данных может меняться и требуется гибкость. MongoDB широко используется в веб-разработке, аналитике и мобильных приложениях.

Почему запускать MongoDB через Docker удобно

  • Легкость установки и настройки: вам не нужно устанавливать базы данных напрямую на ОС, все делается через команды Docker.
  • Изоляция среды: контейнер с MongoDB не влияет на другие программы.
  • Быстрое развёртывание: запускаете и останавливаете MongoDB за пару команд.
  • Легкость обновления: обновлять версию базы можно просто скачав последнюю версию образа.

Как запустить MongoDB в Docker: пошаговая инструкция

Для запуска MongoDB внутри Docker потребуется выполнить несколько простых шагов:

Шаг 1. Скачать образ MongoDB

Docker использует образы — шаблоны для создания контейнеров. Для MongoDB есть официальный образ, который поддерживается разработчиками.

Команда для скачивания docker pull:

[root@waky practice]# docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
20043066d3d5: Already exists
dcec2d403c4e: Pull complete
8a63055b2837: Pull complete
1732f2a4d259: Pull complete
6dc84fd2f3ac: Pull complete
7230971360e4: Pull complete
88373bcb58c1: Pull complete
a89cc6fb1ead: Pull complete
Digest: sha256:7245ffb851d149dbfac67397caf91bae4974d899972f9fd1d8985fc6eea3c13d
Status: Downloaded newer image for mongo:latest
docker.io/library/mongo:latest
[root@waky practice]#

Это скачает последний стабильный образ MongoDB.

Шаг 2. Запустить контейнер с MongoDB

Базовая команда для запуска контейнера docker run:

[root@waky practice]# docker run -d --name mongo_container -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=mypassword -v ./mondo_files: /data/db mongo
b9fa916a79af4b7b1b137de7f0bca7ccba5907e9e7182927b8aeafc2845a30b7
[root@waky practice]# 

Разбор команды:

docker run — команда запуска контейнера
-d — запуск в фоновом режиме
–name mongo_ container — задаём имя контейнера (можете выбрать любое)
-p 27017:27017 — проброс портов, связывает порт хоста и порт контейнера
e MONGO_INITDB_ROOT_USERNAME=root – задаем имя пользователя базы
e MONGO_INITDB_ROOT_PASSWORD=mypassword – пароль пользователя
v ./mondo_files: /data/db – монтирование директории с файлами базы контейнера в локальную директорию, для сохранения изменений в базе
mongo — указываем образ из которого создается контейнер

Теперь контейнер работает, и MongoDB доступна по адресу localhost:27017.

Шаг 3. Проверка работы

Чтобы убедиться, что контейнер с MongoDB запущен, выполним docker ps:

[root@waky practice]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                             NAMES
b9fa916a79af   mongo     "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   0.0.0.0:27017->27017/tcp, [::]:27017->27017/tcp   mongo_container
[root@waky practice]# 

В списке видим наш контейнер.

Также можно подключиться к базе командой mongosh:

[root@waky ~]# mongosh
Current Mongosh Log ID: 692651d4fb2962c3cd9dc29c
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.5.9
Using MongoDB:          undefined
Using Mongosh:          2.5.9
For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/
test> exit
[root@waky ~]#

Так как контейнер работает со стандартным для MongoDB  портом 27017, дополнительных настроек не требуется.

Шаг 4. Управление контейнером

Чтобы остановить контейнер используйте docker stop:

[root@waky ~]# docker stop mongo_container
mongo_container
[root@waky ~]# 

Запускается контейнер командой docker start:

[root@waky ~]# docker start mongo_container
mongo_container
[root@waky ~]#

Для удаления контейнера нужно либо предварительно его остановить, либо использовать параметр -f:

[root@waky ~]# docker rm -f mongo_container
mongo_container
[root@waky ~]# 

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

Заключение

Запуск MongoDB в Docker — удобный и быстрый способ начать работу с этой базой данных. Благодаря изоляции и простоте настройки, вы можете легко создавать тестовые окружения или даже использовать MongoDB на продакшене в контейнерах.