不使用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 ,这样一定程度上保护了数据库的安全性