0%

Docker-Volume-数据持久化方案

Docker Volume 数据持久化方案:

使用 Docker Volume 代替直接挂载

# 创建 volume
docker volume create mongo_data

# 删除卷
docker volume rm mongo_data
# 运行容器
docker run -d --restart=always -p 27017:27017 --name mymongo -v volume:/data/db -e MONGO_LOG_MAX_SIZE=5242880 mongo:latest --wiredTigerCacheSizeGB 1 --auth

查看 Volume 物理路径(MacOS)

docker volume inspect mongo_data

输出示例:

实际数据存储在 Docker 虚拟机中,避免直接操作宿主机文件系统。

[
{
"CreatedAt": "2025-03-14T05:XX:XXZ",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/mongo_data/_data",
"Name": "mongo_data",
"Options": null,
"Scope": "local"
}
]

进入mongo容器

docker exec -it mymongo /bin/bash

image

注意:这里的mymongo是容器的名字,不是镜像的名字。(忘记容器名字,可使用docker ps -a 查看容器名)
image
2.3.2.进入mongosh

# 进入mongo shell
mongosh

注:mongosh 6.0版本之后使用,mongo 6.0版本之前使用,博主就是在这里出问题的,博主安装最新mongodb版本,但是使用的是 mongo 所以一直出现问题:bash: mongo: command not found
image

image
2.3.3.进入admin数据库

use admin

image
2.3.4 创建一个用户,mongodb默认没有用户

# 1.这里创建用户名为root,密码为mongo2023,角色(该用户的权限)为root,数据库为admin(你们按照你们自己的设置)
# 用户名:root,密码:mongo2023,角色:root,数据库:admin

db.createUser({user:'root',pwd:'mongo2023',roles:[{role:'root',db:'admin'}]})


# 2.认证登录db.auth('用户名','密码'),打印1则代表认证通过
db.auth('root','mongo2023')

image
到这里就完成了创建用户和设置密码,如果要退出 Ctrl+D 或者 exit 退出mongodb