docker 运行MongoDB 极限简洁教程

不使用compose

  • 创建volume docker volume create --name = mongodata 其中mongodata是自定义的volume name
  • 查看volume docker volume ls
  • 查看volume具体内容 docker volume inspect <Volume Name> 其中Volume Name 可以通过上一条查看到
  • 在docker 容器中运行 mongodb docker run --name mongodb -v mongodata:/data/db -d -p 27017:27017 mongo --name 设置了一个容器名称,-v 挂载创建好的volume到容器内的某个路径(映射),-d 是detached模式运行
  • 查看容器 docker ps -a
  • 进入容器,运行shell docker exec -ti mongodb mongo 其中mongodb 是容器名 ,mongo 是要运行的命令 (会跳出一个mongo shell)
  • mongo shell 中的一些命令
    • show dbs
    • use mydb 创建一个数据库并切换到mydb
    • show collections (表)
    • db.devices.insertOne(...) 创建一个 devices table 然后插入一些东西。。。
  • 停止容器 docker stop <hash or container name>
  • 重启容器 docker start <hash or container name>

以上内容经过测试 绝对好用,虽然第一项就有一个 错误,但是我不改,就是玩。20220208 (--name =mongodata 中间的=号现在不样用了)

使用compose

注意,compose 自己就能创建一个 common network ,如果使用命令行,还有连接多个容器到一个网络的需求,要自己做设定,但是这里不介绍了

如果有需要,看这个 [中英字幕] Docker and Kubernetes(K8s) 初学者教程

version: '3'

services:
    mongo:
        image: mongo
        environment:
            - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
            - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
            - MONGO_INITDB_DATABASE=project
        volumes:
          -  mongo-data:/data/db
    mongo-express:
        image: mongo-express
        environment:
            - ME_CONFIG_MONGODB_SERVER=mongo
            - ME_CONFIG_MONGODB_PORT=27017
            - ME_CONFIG_MONGODB_ENABLE_ADMIN=false
            - ME_CONFIG_MONGODB_AUTH_DATABASE=admin
            - ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
            - ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
            - ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
            - ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
        depends_on:
            - mongo
        ports:
          - "8888:8081"
        depends_on:
          - mongo
volumes:
  mongo-data:
    driver: local
## 这是.env
MONGO_ROOT_USER=devroot
MONGO_ROOT_PASSWORD=devroot
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev
  • 使用docker-compose docker-compose -f docker-compose.yaml up -f代表要使用一个文件 up 指 start
  • 停止compose后的容器 docker-compose -f docker-compose.yaml down

以上的内容应该能帮助你

  • 使用volume 来持久化 mongodb的数据
  • 使用mongo-express 来作为用户界面 查看MongoDB中的数据
  • 注意 ME_CONFIG_MONGODB_ENABLE_ADMIN=false ,这样一定程度上保护了数据库的安全性
posted @ 2022-02-08 04:20  刘老六  阅读(1162)  评论(0编辑  收藏  举报