Docker 安装 MongoDB

MongoDB 容器的初始化用户、数据卷与副本集。

Beginner
Key Points官方镜像用 MONGO_INITDB_ROOT_USERNAME/PASSWORD 建管理员;副本集必须显式 --replSet 并 rs.initiate()。

启动

Bash
docker run -d --name mongo \
  -p 127.0.0.1:27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=adminpass \
  -v mongo-data:/data/db \
  mongo:7

连进去

Bash
docker exec -it mongo mongosh -u admin -p adminpass --authenticationDatabase admin

# 或者
docker exec -it mongo mongosh "mongodb://admin:adminpass@localhost:27017/?authSource=admin"

副本集

Bash
docker run -d --name mongo-rs \
  -p 127.0.0.1:27017:27017 \
  -v mongo-data:/data/db \
  mongo:7 --replSet rs0 --bind_ip_all

docker exec -it mongo-rs mongosh --eval 'rs.initiate({_id:"rs0",members:[{_id:0,host:"127.0.0.1:27017"}]})'
docker exec -it mongo-rs mongosh --eval 'rs.status().ok'

Transactions and change streams require a replica set. A single-member set is fine locally and costs nothing.

常见问题

SymptomCauseFix
Authentication failedWrong authSourceAdd ?authSource=admin
not master and slaveOk=falseReplica set not initiatedRun rs.initiate()
Data gone after recreateNo volume-v mongo-data:/data/db
MongoDB 5+ ships mongosh instead of the old mongo shell; scripts still calling mongo will get command not found.

Friends & Partners