码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker安装MoogoDB, 进入容器, mongo shell操作mongoDB


    安装MoogoDB, 进入容器, mongo shell操作mongoDB [ 包含 Docker-Compose方式、普通方式 ]

    文章目录

    • 安装MoogoDB, 进入容器, mongo shell操作mongoDB [ 包含 Docker-Compose方式、普通方式 ]
      • `附件:单词本`
      • `附件:什么是 . yml 后缀文件 ?`
      • `附件 .yml书写格式`
        • `基本语法`
      • `附件:hub.Docker mongo文档地址`
      • `1. 安装镜像:`
          • * 拓展:[镜像查询命令]
      • `2. 运行镜像:`
        • `2.1 shell命令行 方式`
          • `无校验AUTH 版 `
          • `校验AUTH 版 `
        • `2.2 docker compose.yml 方式`
          • ` 无校验AUTH 版`
          • `校验AUTH 版`
          • `注意!![ environment:书写格式 ] `
      • `3. 进入运行的mongo容器`
      • `4. bash中进入mongo shell `
        • `版本更替, 进入shell的命令 | mongo [ 版本 < 6.0 ] =>f mongosh [ 版本 > 6.0]`
      • `5. 查看mongoDB数据库`
          • 5.1 [不含auth校验]
          • 5.2 [含auth校验]
      • `6. 注意!!`

    附件:单词本

    音标注释
    container[kənˈteɪnə®]:[ken’ tei’ ne’ er]容器
    volume[ˈvɒljuːm] :[wao’ liu’ mu]卷

    附件:什么是 . yml 后缀文件 ?

    • **​ YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式;
    • ​ YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读;
    • ​ 容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,
    • ​ 比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
    • ​ YML文件的扩展名可以使用.yml或者.yaml**

    附件 .yml书写格式

    1. 基本语法

    *文件格式: .yml
    使用缩进表示层级关系
    缩进不允许使用tab,只允许空格
    缩进空格数不重要,相同层的元素左对齐即可
    注释符号:#

    (1) 键值

    key: value
    
    • 1

    (2)数组:按次序排列的值

    Languages:
      - Ruby
      - Perl
      - Python
    
    • 1
    • 2
    • 3
    • 4

    附件:hub.Docker mongo文档地址

    hub.Docker mongo文档

    1. 安装镜像:

    docker pull mongo:[tag]
    
    • 1
    * 拓展:[镜像查询命令]
    docker search mongo
    
    • 1

    2. 运行镜像:

    [ 2.1 普通方式 | 2.2 docker compose方式; ]

    2.1 shell命令行 方式

    无校验AUTH 版
    docker run --name mymongo --restart=always -p 27017:27017 -v ${PWD}/mongo/db:/data/db -v ${PWD}/mongo/etc:/data/etc/ -itd mongo:5.0.5
    
    
    • 1
    • 2
    校验AUTH 版
    docker run --name mymongo --restart=always -p 27017:27017 -e "MONGO_INITDB_ROOT_USERNAME=root" -e "MONGO_INITDB_ROOT_PASSWORD=123" -v ${PWD}/mongo/db:/data/db -v ${PWD}/mongo/etc:/data/etc/ -itd mongo:5.0.5
    
    
    • 1
    • 2

    -e 环境变量写法

    -e "MONGO_INITDB_ROOT_USERNAME=root" -e "MONGO_INITDB_ROOT_PASSWORD=123"
    # 或者 都可以
    -e MONGO_INITDB_ROOT_USERNAME="root" -e MONGO_INITDB_ROOT_PASSWORD=123
    
    • 1
    • 2
    • 3
    参数作用备注
    –privileged拥有真正的root权限
    –restart=alwaysDocker服务重启容器也启动
    –name容器别名
    -p主机(宿主)端口:容器端口
    -v挂载 [ 主机(宿主)目录:容器目录 ]多个挂载目录, 用多个 -v
    ${PWD} / $PWD当前工作目录的绝对路径
    -i以交互模式运行容器,通常与-t同时使用
    -t为容器重新分配一个伪输入终端,通常与-i同时使用
    -d后台运行容器,并返回容器ID,也即启动守护式容器

    2.2 docker compose.yml 方式

    无校验AUTH 版

    2.2.1 编写docker-compose.yml 文件;

    version: '2.12.2'  # docker compose 版本号
    services:
      mongo:
        image: mongo:5.0.5
        restart: always
        container_name: mongodb505
        ports: 
         - 27017:27017
        volumes:
         - ${PWD}/data/db:/data/db
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    校验AUTH 版

    运行时直接创建一个初始用户;

    root

    123

    注意!![ environment:书写格式 ]

    environment:写法格式

    # [ 横线 + 键+ 等号 + 值 ]
     environment:
          - AUTH=yes
          - MONGO_INITDB_ROOT_USERNAME=admin
          - MONGO_INITDB_ROOT_PASSWORD=admin123
    # 或者 [ 键 + 冒号 + 空格 + 值 ]
     environment:
          AUTH: yes
          MONGO_INITDB_ROOT_USERNAME: admin
          MONGO_INITDB_ROOT_PASSWORD: admin123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    version: '2.12.2'
    services:
      mongo:
        image: mongo
        restart: always
        container_name: mongodbMother-init-username
        environment:
         - MONGO_INITDB_ROOT_USERNAME=root
         - MONGO_INITDB_ROOT_PASSWORD=123
        ports:
         - 27017:27017
        volumes:
         - ${PWD}/mother/db:/data/db
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.2.2 启动docker compose

    # docker-compose.yml 目录下执行命令:
    docker compose up -d
    
    • 1
    • 2

    3. 进入运行的mongo容器

    docker exec -it mymongo bash
    # or
    docker exec -it mymongo /bin/bash
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    成功!


    4. bash中进入mongo shell

    版本更替, 进入shell的命令 | mongo [ 版本 < 6.0 ] =>f mongosh [ 版本 > 6.0]

    the “mongo” shell has been superseded by “mongosh”,
    which delivers improved usability and compatibility.The “mongo” shell has been deprecated and will be removed in
    an upcoming release

    # 6.0 版本之前,进入mongo shell
      mongo 
      
    
    # 6.0 版本开始, 进入mongo shell 
    	mongo [命令被遗弃]
    	# 改为
    	mongosh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    成功!


    5. 查看mongoDB数据库

    5.1 [不含auth校验]
    show dbs
    
    • 1

    在这里插入图片描述

    5.2 [含auth校验]
     environment:
    
       - MONGO_INITDB_ROOT_USERNAME=root
    
       - MONGO_INITDB_ROOT_PASSWORD=123
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 设定的初始用户,是针对admin数据库下;

    2. admin这个数据库是系统自带的数据库,**他的用户可以访问任何其他数据库的数据**,也叫做超级管理员

    3. db.auth(arg1,arg2) :arg1,arg2两者数据类型都为string;即便MONGO_INITDB_ROOT_PASSWORD: 123 值为Number类型

    use admin
    db.auth('root','123')
    
    • 1
    • 2

    在这里插入图片描述

    成功!


    6. 注意!!

    volumes:
         - ${PWD}/mother/db:/data/db
    
    • 1
    • 2

    如果当前容器rm后 没有删除宿主机挂载目录;

    重新运行一个相同挂载路径的新容器,原有数据库admin中创建的用户root,123 还会保留auth;

  • 相关阅读:
    node实战——搭建带swagger接口文档的后端koa项目(node后端就业储备知识)
    bootstrap-table固定右侧列+表头和内容对齐
    【论文阅读】Weakly Supervised Semantic Segmentation using Out-of-Distribution Data
    Redis核心结构以及渐进式扩容
    2022最新 Netty底层数据交互源码剖析二
    Ubuntu 安装 npm 和 node
    Cannot use @TaskAction annotation on method TransformTask.transform()
    vivado产生报告阅读分析-Report Power4
    IO基础操作和常识
    每天一个知识点- redis 缓存雪崩、缓存穿透、缓存击穿
  • 原文地址:https://blog.csdn.net/weixin_43101443/article/details/128188809
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号