首页 > 数据库 >使用docker搭建mongodb

使用docker搭建mongodb

时间:2024-03-14 16:02:10浏览次数:31  
标签:mongodb 27017 宿主机 db MongoDB docker data 搭建

使用 Docker CLI 搭建 MongoDB

1. 运行 MongoDB 容器

首先,我们使用以下命令来启动一个 MongoDB 容器:

docker run -itd --name mongodb_comm -v $PWD

/data:/data/db -p 27017:27017 mongo:4.4 --auth

参数解释:

  • -itd: 这三个参数通常一起使用,i 表示交互式模式,t 分配一个伪终端,d 表示后台运行。
  • --name mongodb_comm: 为容器指定一个名字 mongodb_comm,方便后续的操作和管理。
  • -v $PWD/data:/data/db: 将宿主机当前目录下的 data 目录挂载到容器的 /data/db 目录。这样做的目的是将 MongoDB 数据持久化到宿主机上,以便容器重启后数据不会丢失。
  • -p 27017:27017: 将容器内部的 27017 端口映射到宿主机的 27017端口上,使得外部可以通过宿主机的 27017端口访问 MongoDB。
  • mongo:4.4: 使用 MongoDB 的 4.4 版本镜像。
  • --auth: 开启 MongoDB 的身份验证,增加数据库安全性。
2. 创建用户

接下来,我们需要创建一个用户,以便能够以验证方式连接到 MongoDB:

docker exec -it mongodb_comm mongo admin

在 MongoDB shell 中执行以下命令创建用户:

db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});

这个命令创建了一个名为 root,密码为 123456 的用户,拥有管理所有数据库的权限和在任何数据库中读写的权限。

3. 连接测试

为了验证是否成功,可以尝试使用以下命令进行连接测试:

db.auth('root', '123456')
4. 插入和查询数据

作为测试,我们可以尝试插入一些数据,然后查询:

db.user.insert({"name":"abc","age":18})

db.user.find()

使用 Docker Compose 搭建 MongoDB

Docker Compose 文件

要使用 Docker Compose 搭建 MongoDB,首先需要创建一个 docker-compose.yml 文件,内容如下:

version: '3.1'
services:
  mongodb:
    image: mongo:4.4
    ports:
      - "27017:27017"
    volumes:
      - ./data:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    command: --auth

配置解释:

  • version: 指定 Docker Compose 文件格式版本。
  • services: 定义要运行的服务,这里是 mongodb
  • image: 使用的 MongoDB 镜像版本。
  • ports: 将容器的 27017 端口映射到宿主机的 27017 端口。
  • volumes: 数据持久化配置,与 CLI 方法相同。
  • environment: 设置环境变量,这里是初始化时的 root 用户名和密码。
  • command: 容器启动时执行的命令,这里开启了认证模式。

使用 docker-compose up -d 命令启动服务。

标签:mongodb,27017,宿主机,db,MongoDB,docker,data,搭建
From: https://blog.csdn.net/LogicLancer/article/details/136713394

相关文章

  • 苍穹外卖-后端多模块项目搭建
    由于视频中给出了项目一些基础代码,因此自己从0开始搭建一个。文末附pom.xml。新建项目并连接github首先新建项目,项目名称为sky-take-out-1,如下图:父模块任何环境都不要,只需要指定springboot版本。选定一些依赖:例如Lombok(自动注解)、SpringWeb、MyBatisFramework、MySQL......
  • linux使用docker安装nexus
    nexus安装命令 拉取镜像dockerpulldocker.io/sonatype/nexus3修改目录权限chown-R200/data/maven-data/使用docker启动,挂载本地目录卷dockerrun-tid-p9081:8081--restart=always--namenexus-eNEXUS_CONTEXT=nexus-v/data/maven-data/:/nexus-datadoc......
  • oracle linux 9安装docker失败
    报错信息如下[root@CHEN~]#dockerrun-p3307:3306--namemysql8.0-eMYSQL_ROOT_PASSWORD=root-dmysql:8.0EmulateDockerCLIusingpodman.Create/etc/containers/nodockertoquietmsg.Error:netavark:unabletoappendrule'-d10.88.0.0/16-jACCEPT�......
  • docker实战(1)
    docker搭建mysql一,搭建docker环境二,Docker安装mysql1,查看mysql版本:dockersearchmysql2,安装指定mysql版本或安装最新版本dockerpullmysql:5.8或dockerpullmysql:latest3,查看本地镜像中是否已安装好mysql镜像:dockerimages4,运行容器启动mysql服务dockerrun-itd......
  • docker的使用方法
    一、docker安装Docker官方文档|DockerDocumentation1.自动安装wgethttp://fishros.com/install-Ofishros&&sudobashfishros2.手动安装2.1.ubuntu安装1.系统需求UbuntuJammy22.04(LTS)UbuntuImpish21.10UbuntuFocal20.04(LTS)UbuntuBionic18.04......
  • 从零开始写 Docker(六)---实现 mydocker run -v 支持数据卷挂载
    本文为从零开始写Docker系列第六篇,实现类似docker-v的功能,通过挂载数据卷将容器中部分数据持久化到宿主机。完整代码见:https://github.com/lixd/mydocker欢迎Star推荐阅读以下文章对docker基本实现有一个大致认识:核心原理:深入理解Docker核心原理:Namespace、Cgr......
  • Qt 如何搭建Lua的运行环境
    一、Lua简介Lua是一种强大的、高效的、轻量级的、可嵌入的脚本语言。它支持过程(procedural)编程、面向对象编程、函数式编程以及数据描述。Lua是动态类型的,运行速度快,支持自动内存管理,因此被广泛用于配置、脚本编写等场景。二、Lua的优势Lua脚本可以很容易的被C/C++代......
  • 使用 docker-easyconnect
    使用docker-easyconnectdocker-easyconnect是EasyConnect和aTrust运行在docker中的版本使用非常简单解决如下问题:1解决了软件对物理机的更改以及监控2可以在linux服务器上部署了注意:该项目为第三方开源非官方提供一行docker命令启动dockerrun--rm--device/de......
  • MongoDB数据库之主从复制配置实战【转】
    一、MongoDB介绍 1.1MongoDB简介MongoDB是一个开源的文档数据库,使用JSON格式存储和操作数据,具有高度灵活性和可扩展性。MongoDB的数据模型是面向文档的,这意味着它可以存储各种类型的数据,如数组、嵌套文档和二进制数据。MongoDB是一种NoSQL数据库,不需要使用传统的表格结构。M......
  • docker-compose部署prometheus+grafana进行服务器监控
    1、创建prometheus【prometheus.yml】配置global:scrape_interval:15sevaluation_interval:15sscrape_configs:-job_name:'prometheus'static_configs:-targets:['192.168.2.216:9090']ViewCode2、创建【docker-com......