Если вы хотите легко и быстро запустить базу данных MongoDB на своем компьютере или сервере, использование Docker — отличный выбор.
В этой статье я расскажу, что такое Docker и MongoDB, почему их сочетание удобно, а также подробно объясню, как развернуть MongoDB внутри контейнера Docker.
Что такое Docker и почему его используют
Docker — платформа для создания, запуска и управления контейнерами. Контейнеры позволяют запускать приложения и базы данных изолированно друг от друга, что облегчает их настройку и масштабирование.
О том, как установить Docker, есть отдельная статья. В рамках этой инструкции предполагается, что Docker уже установлен и готов к использованию.
Что такое MongoDB и зачем она нужна
MongoDB — это современная база данных, основанная на принципе NoSQL. Она отлично подходит для хранения больших объемов данных, особенно когда структура данных может меняться и требуется гибкость. MongoDB широко используется в веб-разработке, аналитике и мобильных приложениях.
Почему запускать MongoDB через Docker удобно
- Легкость установки и настройки: вам не нужно устанавливать базы данных напрямую на ОС, все делается через команды Docker.
- Изоляция среды: контейнер с MongoDB не влияет на другие программы.
- Быстрое развёртывание: запускаете и останавливаете MongoDB за пару команд.
- Легкость обновления: обновлять версию базы можно просто скачав последнюю версию образа.
Как запустить MongoDB в Docker: пошаговая инструкция
- Шаг 1. Скачать образ MongoDB
- Шаг 2. Запустить контейнер с MongoDB
- Шаг 3. Проверка работы
- Шаг 4. Управление контейнером
Для запуска 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 на продакшене в контейнерах.