docker部署mongodb数据库
1、拉取mongo镜像2、创建mongo数据持久化目录3、启动MongoDB容器4、创建用户数据5、登录成功后,创建新用户6、用户的常用命令。

1、拉取mongo镜像
docker pull mongo:latest
或者
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/mongo:latest
ARM 架构
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_mongo:latest
2、创建mongo数据持久化目录
mkdir -p /data/mongodb/config /data/mongodb/data /data/mongodb/logs
vim /data/mongodb/config/mongod.conf
# 数据库存储路径
dbpath=/data/mongodb/data
# 日志文件路径
logpath=/data/mongodb/logs/mongod.log
# 监听的端口
port=27017
# 允许所有的 IP 地址连接
bind_ip=0.0.0.0
# 启用日志记录
journal=true
# 是否后台运行
fork=true
# 启用身份验证
#auth=true
3、启动MongoDB容器
docker run -dit --name mongo \
-p 17017:27017 \
-v /data/mongodb/config/mongod.conf:/etc/mongod.conf \
-v /data/mongodb/data:/data/db \
-v /data/mongodb/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/mongo:latest
4、创建用户数据
docker exec -it mongo /usr/bin/mongosh
use admin
db.auth("admin","123456")
5、登录成功后,创建新用户
db.createUser(
{
user:"testuser",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);
db.auth('testuser','123456')
6、用户的常用命令
db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]}) #更新用户角色,修改用户权限
db.changeUserPassword("admin","123456") #更新用户密码
db.dropUser({'admin'}) #删除用户
show users #查看所有用户
安装mongo web管理工具mongo-express
1、拉取mongo镜像
docker pull mongo-express:latest
或者
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/mongo-express:latest
ARM 架构
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_mongo-express:latest
1、mongo-express简介
mongo-express 是一个基于 Node.js、Express 框架和 Bootstrap 构建的轻量级、开源的 MongoDB 数据库 Web 管理界面。你可以把它看作是 MySQL 的 phpMyAdmin,但是为 MongoDB 设计的。
它的主要目标是提供一个简单、直观的 Web 界面,让开发者和管理员能够在不使用命令行的情况下,轻松地执行常见的数据库操作。
2、主要功能与特性
mongo-express 提供了丰富的功能来管理 MongoDB:
数据库和集合管理
查看所有数据库和集合。
创建/删除数据库。
创建/重命名/删除集合。
查看集合的统计信息(如文档数量、存储大小、索引等)。
文档(Document)操作
增:通过直观的 Web 表单或 JSON 输入来添加新文档。
删:可以删除单个或多个文档。
改:直接在线编辑文档,支持 JSON 视图和表单视图,修改后一键保存。
查:浏览集合中的所有文档,支持分页。可以执行简单的查询。
索引管理
查看集合中已存在的所有索引。
创建新的索引(支持指定字段和排序顺序)。
删除已有的索引。
用户与角色管理
查看数据库用户。
创建和删除用户,并为其分配角色。
GridFS 支持
如果使用了 MongoDB 的 GridFS 功能来存储大文件(如图片、视频),mongo-express 可以列出、预览和删除这些文件。
其他实用功能
BSON 数据类型支持:能正确显示和编辑 ObjectId、ISODate、Binary Data 等 MongoDB 特有的 BSON 数据类型。
命令行交互:在界面上可以直接运行一些 MongoDB 命令。
主题支持:提供亮色和暗色主题。
docker run -dit --name mongo-express-ui \
-p 8081:8081 \
--link mongo:mongo-db \
-e ME_CONFIG_MONGODB_SERVER=mongo-db \
-e ME_CONFIG_MONGODB_ADMINUSERNAME=admin \
-e ME_CONFIG_MONGODB_ADMINPASSWORD=123456 \
-e ME_CONFIG_BASICAUTH_USERNAME=user \
-e ME_CONFIG_BASICAUTH_PASSWORD=userpassword \
--restart=always \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/mongo-express:latest
访问mongo服务
浏览器访问: http://192.168.102.115:8081
设置管理员账号: user/userpassword
参数说明:
-d:后台运行容器
–name adminmongo:设置容器名称
–restart unless-stopped:设置重启策略
-e HOST=0.0.0.0:设置环境变量
–link mongodb:mongodb:链接到 mongodb 容器
-p 1234:1234:端口映射
–network mongo:连接到 mongo 网络
registry.cn-hangzhou.aliyuncs.com/qiluo-images/adminmongo:镜像名称
arm架构
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_adminmongo
等待 MongoDB 完全启动后,运行 adminmongo 容器
docker run -d \
--name adminmongo \
--restart unless-stopped \
-e HOST=0.0.0.0 \
--link mongo:mongodb \
-p 1234:1234 \
--network mongo \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/adminmongo
访问mongodb管理页面
浏览器访问: http://192.168.102.115:1234
docker exec -it mongodb /usr/bin/mongosh
use admin
db.auth("admin","123456")

Kubernetes部署,包含PVC和PV配置
- 创建 PersistentVolume (PV)
# mongo-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
labels:
type: local
app: mongo
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
path: /data/mongodb
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-logs-pv
labels:
type: local
app: mongo
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: manual
hostPath:
path: /data/mongodb-logs
type: DirectoryOrCreate
- 创建 PersistentVolumeClaim (PVC)
# mongo-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: manual
selector:
matchLabels:
app: mongo
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-logs-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: manual
selector:
matchLabels:
app: mongo
- 创建 ConfigMap (用于mongod.conf)
# mongo-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mongo-config
data:
mongod.conf: |
# MongoDB configuration file
storage:
dbPath: /data/db
journal:
enabled: true
systemLog:
destination: file
path: /var/log/mongodb/mongod.log
logAppend: true
net:
port: 27017
bindIp: 0.0.0.0
security:
authorization: enabled
- 创建 MongoDB Deployment
# mongo-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-deployment
labels:
app: mongo
spec:
replicas: 1
selector:
matchLabels:
app: mongo
template:
metadata:
labels:
app: mongo
spec:
# 使用节点选择器指定master节点(如果需要)
# nodeSelector:
# node-role.kubernetes.io/control-plane: ""
containers:
- name: mongo
image: registry.cn-hangzhou.aliyuncs.com/qiluo-images/mongo:latest
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: "admin"
- name: MONGO_INITDB_ROOT_PASSWORD
value: "RGQRYBs2NjTlP1o2"
volumeMounts:
- name: mongo-data
mountPath: /data/db
- name: mongo-logs
mountPath: /var/log/mongodb
- name: mongo-config
mountPath: /etc/mongod.conf
subPath: mongod.conf
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "500m"
livenessProbe:
exec:
command:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
exec:
command:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 5
periodSeconds: 10
volumes:
- name: mongo-data
persistentVolumeClaim:
claimName: mongo-pvc
- name: mongo-logs
persistentVolumeClaim:
claimName: mongo-logs-pvc
- name: mongo-config
configMap:
name: mongo-config
- 创建 Service
# mongo-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mongo-service
spec:
selector:
app: mongo
ports:
- name: mongo
port: 27017
targetPort: 27017
nodePort: 32017 # 在 30000-32767 范围内
type: NodePort
~
在master节点创建目录:
sudo mkdir -p /data/mongodb
sudo mkdir -p /data/mongodb-logs
sudo chmod 777 /data/mongodb /data/mongodb-logs
应用所有配置:
kubectl apply -f mongo-pv.yaml
kubectl apply -f mongo-pvc.yaml
kubectl apply -f mongo-configmap.yaml
kubectl apply -f mongo-deployment.yaml
kubectl apply -f mongo-service.yaml
检查部署状态:
kubectl get pods -l app=mongo
kubectl get pv
kubectl get pvc
kubectl get service mongo-service



更多推荐

所有评论(0)