使用Docker部署MongoDB

使用Docker部署MongoDB

使用Docker部署MongoDB是一种快速、便捷的方式,以下是详细步骤:

1. 基本部署

拉取MongoDB镜像

bash 复制代码
docker pull mongo:latest

运行MongoDB容器(最简单方式)

bash 复制代码
docker run --name mongodb -d -p 27017:27017 mongo

2. 带持久化存储的部署

bash 复制代码
docker run --name mongodb \
  -v /path/on/host:/data/db \
  -d -p 27017:27017 \
  mongo

3. 带认证的部署

首次运行(无认证)创建管理员用户

bash 复制代码
docker run --name mongodb \
  -d -p 27017:27017 \
  mongo --auth

进入容器创建用户

bash 复制代码
docker exec -it mongodb mongosh admin

# 在MongoDB shell中创建用户
db.createUser({ 
  user: 'admin', 
  pwd: 'yourpassword', 
  roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 
})

带认证的完整部署命令

bash 复制代码
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文件:

yaml 复制代码
version: '3.8'

services:
  mongodb:
    image: mongo:latest
    container_name: mongodb
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=yourpassword
    ports:
      - "27017:27017"
    volumes:
      - mongodb_data:/data/db
    restart: unless-stopped

volumes:
  mongodb_data:

然后运行:

bash 复制代码
docker-compose up -d

5. 高级配置

自定义配置文件

bash 复制代码
# 创建配置文件目录
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

副本集部署(开发环境)

bash 复制代码
# 启动三个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. 常用管理命令

查看运行中的容器

bash 复制代码
docker ps

查看MongoDB日志

bash 复制代码
docker logs mongodb

进入MongoDB shell

bash 复制代码
docker exec -it mongodb mongosh -u admin -p yourpassword

停止和启动容器

bash 复制代码
docker stop mongodb
docker start mongodb

删除容器

bash 复制代码
docker rm -f mongodb

7. 安全建议

  1. 生产环境务必启用认证

  2. 不要将MongoDB直接暴露在公网上

  3. 定期备份数据

  4. 考虑使用网络隔离

    bash 复制代码
    docker network create mongo-network
    docker run --name mongodb --network mongo-network -d mongo
  5. 限制资源使用

    bash 复制代码
    docker run --name mongodb --memory="2g" --cpus="1.0" -d mongo

通过Docker部署MongoDB可以快速搭建开发、测试环境,生产环境建议考虑更全面的配置和监控方案。

相关推荐
功德+n5 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭5 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿6 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher7 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家9 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR9 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆9 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104669 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin9999910 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊10 小时前
Docker 入门之网络基础
网络·docker·php