docker部署mongodb并开启远程连接

1. 搜索、拉取和查看镜像

docker search mongo
docker pull mongo
docker images | grep mongo

2. 使用 docker 安装 mongodb(创建容器并运行)

 docker run --name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo

执行上述命令之后, 一个挂载了 mongo镜像的容器就开始运行了 其中

  • --name 设置了容器的名字
  • -v 设置了路径的映射, 将本地路径映射到容器中. 此处, 路径可以自定义
  • -p 设置了端口的映射, 将容器的27017(右侧) 映射到了本地的27017(右侧)

运行已有的容器

docker start/stop/stats/restart mongodb

安装完成后的几个目录和文件

/usr/bin/mongod
/etc/mongod.conf.orig
/var/log/mongodb/mongod.log
/data/db/ (目录)

3. 进入、退出容器

# 进入容器
docker exec -it mongodb bash

上述命令的意思如下: 使用交互的形式, 在 名字为 mongodb 的容器中实行 bash这个命令
退出:ctl + P + Q 或者 exit

4. mongodb的使用

  • 用户的创建
#进入 `mongo`
mongo
#进入 admin 的数据库
use admin
#创建管理员用户
db.createUser(
   {
     user: "root",
     pwd: "752700",
     roles: [ { role: "root", db: "admin" } ]
   }
 )
#其他用户后续视情况添加
  • 数据库的建立
use demo;
  • mongo 是否正常启动的校验
#先写入一条数据
db.info.save({name: 'test', age: '22'})
#查看写入的数据
db.info.find();

结果如下

{ “_id” : ObjectId(“5c973b81de96d4661a1c1831”), “name” : “test”, “age” : “22” }

5. 远程连接的开启

mongodb 的容器当中

#更新源
apt-get update
#安装 vim
apt-get install vim
#修改 mongo 配置文件
vim /etc/mongod.conf.orig

将其中的bindIp: 127.0.0.1注释掉# bindIp: 127.0.0.1 或者改成bindIp: 0.0.0.0 即可开启远程连接
参考:mongodb配置文件详解

6. 宿主机开放端口27017

移步虚拟机防火墙以及端口操作

7. 踩坑远程服务器还需添加安全组策略

添加对应的端口,否则无法远程连接
在这里插入图片描述

在使用Docker部署MongoDB时,即使将`bindIp`设置为`127.0.0.1`,仍然可以通过一些配置实现远程连接。这是因为Docker的网络机制与主机网络不同。以下是一些可能的原因和解决方法: 1. **Docker网络模式**: - 如果你使用`--network host`模式启动MongoDB容器,那么容器会共享主机的网络栈。这种情况下,`bindIp: 127.0.0.1`会绑定到主机上的回环地址,而不是容器内的回环地址。因此,远程连接仍然是可能的。 2. **端口映射**: - 如果你在启动容器时使用了`-p`参数进行端口映射,例如`-p 27017:27017`,那么主机的27017端口会被映射到容器的27017端口。即使`bindIp`设置为`127.0.0.1`,外部仍然可以通过主机的IP和端口进行连接。 3. **修改`bindIp`**: - 为了确保安全性,建议将`bindIp`设置为`0.0.0.0`,这样MongoDB会监听所有网络接口。也可以在`docker-compose.yml`文件中进行配置: ```yaml version: '3.8' services: mongo: image: mongo ports: - "27017:27017" volumes: - mongo-data:/data/db environment: MONGO_INITDB_ROOT_USERNAME: your_username MONGO_INITDB_ROOT_PASSWORD: your_password command: --bind_ip_all volumes: mongo-data: ``` 4. **防火墙设置**: - 确保主机的防火墙允许外部连接访问MongoDB的端口(默认是27017)。可以使用以下命令开放端口: ```bash sudo ufw allow 27017 ``` 通过以上配置,即使`bindIp`设置为`127.0.0.1`,仍然可以通过远程连接访问MongoDB。为了提高安全性,建议使用认证机制和TLS/SSL加密连接
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值