docker 安装mongodb

docker 安装mongodb(5.0+)

拉取mongodb镜像

shell 复制代码
docker pull mongo

运行容器

shell 复制代码
docker run -d --name mongodb -v /mycontainers/mongodb/data:/data/db -p 27017:27017  mongo --auth

^: -d : 指定后台运行
^: --name mongodb :设置容器名
^: -v /mycontainers/mongodb/data:/data/db :挂载目录,前面的是宿主机的目录,后面的是容器中的目录
^: -p 27017:27017 :端口映射,前面的宿主机的端口,后面是容器开启端口
^: --auth : 指定需要用户密码验证

进入mongo容器

shell 复制代码
docker exec -it mongodb mongosh admin

^: mongosh: MongoDB 5.0 及以上版本使用mongosh进入mongo容器,之前版本使用mongo进入mongo容器
^: admin :数据库,进入时可指定也可不指定,不知道进入容器默认进入test数据库,初次进入新建的mongo容器,需要新进入admin数据库创建管理员账号并登录,之后可以进入自己创建的数据库并登录

创建管理员账号

shell 复制代码
db.createUser({user:'admin',pwd:'admin.123',roles:[{ role:'userAdminAnyDatabase', db:'admin'},'readWriteAnyDatabase']});

登录管理员账号

shell 复制代码
db.auth("admin","admin.123");
db.auth("master","master.123");
db.auth("slave","slave.123");

创建并进入新数据库

shell 复制代码
use station;
use new_master;
use new_slave;
use new_slave_wind;
use new_slave_pv;

创建普通账号

shell 复制代码
db.createUser({ user:'admin',pwd:'admin.123',roles:[ { role:'readWrite', db: 'station'}]});

db.createUser({user:'master',pwd:'master.123',roles:[ { role:'readWrite', db: 'new_master'}]});

db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave'}]});

db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave_wind'}]});

db.createUser({ user:'slave',pwd:'slave.123',roles:[ { role:'readWrite', db: 'new_slave_pv'}]});

登录普通账号

shell 复制代码
db.auth("admin","admin.123");
db.auth("master","master.123");
db.auth("slave","slave.123");

创建集合

shell 复制代码
db.createCollection("tt_message");

db.createCollection("tt_offline");
db.createCollection("tt_not_in_table");
db.createCollection("tt_point_indicator");

查看集合

shell 复制代码
show collections;

查询文档数量

shell 复制代码
db.collectionName.count()
db.collectionName..countDocuments()
eg:
db.tt_offline.count()
db.tt_offline.countDocuments()

docker-compose启动容器

docker-compose.yml配置

shell 复制代码
version: "3.0"
services:
  mongodb:
    image: mongo:latest
    container_name: mongodb
    restart: always
    ports:
      - 27017:27017
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/mycontainers/mongodb/data:/data/db
#      - /data/mycontainers/data/configdb/mongod.conf:/etc/mongod.conf
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=root123
      - MONGODB_AUTH=yes
    network_mode: host

^: - MONGO_INITDB_ROOT_USERNAME=root
^: - MONGO_INITDB_ROOT_PASSWORD=root123 直接设置管理员账号
^: - MONGODB_AUTH=yes 指定需要用户密码验证

进入mongo容器

shell 复制代码
docker exec -it mongodb mongosh admin

登录管理员账号

复制代码
db.auth("admin","admin.123");

创建并进入新数据库(操作同上)

创建普通账号(同上)

登录普通账号(同上)

创建集合(同上)

相关推荐
问简2 小时前
docker 镜像相关
运维·docker·容器
Benszen3 小时前
Docker容器化技术实战指南
运维·docker·容器
Hommy884 小时前
【开源剪映小助手】Docker 部署
docker·容器·开源·github·aigc
斯普信云原生组5 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪5 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人6 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
开心码农1号8 小时前
k8s中service和ingress的区别和使用
云原生·容器·kubernetes
L1624768 小时前
Kubernetes 完整学习手册(1 主多从 + 纯 YAML 部署 + 访问原理)
学习·容器·kubernetes
爬山算法10 小时前
MongoDB(86)如何使用MongoDB存储大文件?
数据库·mongodb
sbjdhjd11 小时前
Docker | 核心概念科普 + 保姆级部署
linux·运维·服务器·docker·云原生·面试·eureka