使用Docker部署MongoDB
使用Docker部署MongoDB
使用Docker部署MongoDB是一种快速、便捷的方式,以下是详细步骤:
1. 基本部署
拉取MongoDB镜像
docker pull mongo:latest
运行MongoDB容器(最简单方式)
docker run --name mongodb -d -p 27017:27017 mongo
2. 带持久化存储的部署
docker run --name mongodb \-v /path/on/host:/data/db \-d -p 27017:27017 \mongo
3. 带认证的部署
首次运行(无认证)创建管理员用户
docker run --name mongodb \-d -p 27017:27017 \mongo --auth
进入容器创建用户
docker exec -it mongodb mongosh admin# 在MongoDB shell中创建用户
db.createUser({ user: 'admin', pwd: 'yourpassword', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
带认证的完整部署命令
docker run --name mongodb \-e MONGO_INITDB_ROOT_USERNAME=admin \-e MONGO_INITDB_ROOT_PASSWORD=yourpassword \-d -p 27017:27017 \mongo --auth
4. 使用Docker Compose部署
创建docker-compose.yml
文件:
version: '3.8'services:mongodb:image: mongo:latestcontainer_name: mongodbenvironment:- MONGO_INITDB_ROOT_USERNAME=admin- MONGO_INITDB_ROOT_PASSWORD=yourpasswordports:- "27017:27017"volumes:- mongodb_data:/data/dbrestart: unless-stoppedvolumes:mongodb_data:
然后运行:
docker-compose up -d
5. 高级配置
自定义配置文件
# 创建配置文件目录
mkdir -p /path/to/mongodb/config# 创建配置文件
echo "storage:journal:enabled: true
security:authorization: enabled" > /path/to/mongodb/config/mongod.conf# 运行容器
docker run --name mongodb \-v /path/to/mongodb/config:/etc/mongo \-v /path/to/mongodb/data:/data/db \-d -p 27017:27017 \mongo --config /etc/mongo/mongod.conf
副本集部署(开发环境)
# 启动三个MongoDB实例
docker run --name mongo1 -d -p 27017:27017 mongo --replSet rs0 --bind_ip_all
docker run --name mongo2 -d -p 27018:27017 mongo --replSet rs0 --bind_ip_all
docker run --name mongo3 -d -p 27019:27017 mongo --replSet rs0 --bind_ip_all# 配置副本集
docker exec -it mongo1 mongosh --eval "rs.initiate({_id: 'rs0',members: [{_id: 0, host: 'mongo1:27017'},{_id: 1, host: 'mongo2:27017'},{_id: 2, host: 'mongo3:27017'}]
})"
6. 常用管理命令
查看运行中的容器
docker ps
查看MongoDB日志
docker logs mongodb
进入MongoDB shell
docker exec -it mongodb mongosh -u admin -p yourpassword
停止和启动容器
docker stop mongodb
docker start mongodb
删除容器
docker rm -f mongodb
7. 安全建议
-
生产环境务必启用认证
-
不要将MongoDB直接暴露在公网上
-
定期备份数据
-
考虑使用网络隔离
docker network create mongo-network docker run --name mongodb --network mongo-network -d mongo
-
限制资源使用
docker run --name mongodb --memory="2g" --cpus="1.0" -d mongo
通过Docker部署MongoDB可以快速搭建开发、测试环境,生产环境建议考虑更全面的配置和监控方案。