Docker部署Mongo
在macOS中使用Docker部署MongoDB的步骤如下:安装Docker Desktop for Mac(如果尚未安装)。运行MongoDB容器。
·
在macOS中使用Docker部署MongoDB的步骤如下:
安装Docker Desktop for Mac(如果尚未安装)。
运行MongoDB容器。
以下是具体的命令:
# 拉取官方MongoDB镜像
docker pull mongo
# 运行MongoDB容器
docker run --name some-mongo -d mongo
# 如果需要将MongoDB数据保存在本地,可以使用volume参数
这里--name的some-mongo是你给容器指定的名字,
-v /my/own/datadir是你本地的目录路径,用于持久化MongoDB数据。
-p 如果你需要将MongoDB的端口映射到本地,可以使用-p参数:
-e 你就可以在本地使用MongoDB客户端连接到MongoDB实例,默认没有用户名和密码。如果需要设置用户名和密码,可以通过环境变量进行配置:
docker run -it --name some-mongo
-v /Users/aqbook/mongodbdir:/data/db
-p 27017:27017
-e MONGO_INITDB_ROOT_USERNAME=admin
-e MONGO_INITDB_ROOT_PASSWORD=123456
-d mongo
-d:表示以“分离模式”(detached mode)运行容器。这意味着 Docker 容器将在后台运行,不会与当前的命令行会话交互。
-i:表示“交互模式”(interactive),即使用标准输入(STDIN)。通常与 -t 选项一起使用,以便你可以与容器进行交互。
-t:表示分配一个伪终端(pseudo-TTY),这样你就可以与容器内的进程进行交互。
所以,-dit 选项组合的含义是:
-d:容器在后台运行。
-i:保持容器的标准输入打开。
-t:分配一个伪终端,使得你可以与容器内的进程进行交互。
-e MONGO_LOG_LEVEL=warning 环境变量设置了 MongoDB 的日志级别为 warning,这样就不会显示信息性日志消息。
简而言之,-dit 选项允许你在一个分离模式下启动一个容器,同时保持交互性,这样你就可以在需要时与容器进行交互,例如通过 docker exec 命令进入容器内部。

4.链接Mongo容器
//创建用户并授权数据库
//进入容器
docker exec -it <容器名> /bin/bash
//链接数据库
mongo -u admin -p 123456
//***可以先查看数据库信息
show dbs
//创建用户:
use admin
db.createUser({
user: "aqian",
pwd: "123456",
roles: [{role: "readWrite", db: "admin"}]
})
5.导入数据库备份
mongorestore -u admin -p 123456 --db admin /data/db/mhd
#这里的 smkdb 是用于连接到 MongoDB 的用户名,smkdb123 是密码,
--db smkdb 指定了要导入到的数据库名称,/data/db/mhd 是备份文件的路径。
- (我的理解失误)您提到的“最后把数据存放在admin数据库的admin /data/db/mhd目录下”有一点混淆。
/data/db/mhd是备份文件在宿主机上的路径,不是数据库内部的路径。mongorestore命令会将备份文件中的数据恢复到指定的数据库admin中,而不是将数据存放到某个目录下。
下面是我不太了解的详解:
当然,让我们一步一步来整理这个过程,并解释其中的各个 `smkdb` 之间的关系。
### 1. 进入容器
首先,你需要使用 `docker exec` 命令进入正在运行的 MongoDB 容器:
```sh
docker exec -it mymongo /bin/bash
```
这里的 `mymongo` 是你的容器名称,`/bin/bash` 是你想要在容器中启动的 shell。
### 2. 连接到 MongoDB 数据库
接下来,你使用 MongoDB 客户端连接到数据库:
```sh
mongo -u smkdb -p smkdb123
```
这里的 `smkdb` 是你之前在创建 MongoDB 容器时设置的 MongoDB 用户名,`smkdb123` 是该用户的密码。
### 3. 创建用户
连接到 MongoDB 后,你选择使用 `smkdb` 数据库,并为该数据库创建一个新的用户:
```sh
use smkdb
db.createUser({
user: "smkdb",
pwd: "smkdb123",
roles: [{role: "readWrite", db: "smkdb"}]
})
```
这里的 `smkdb` 是你正在创建的新用户的用户名和密码,同时也是你授予该用户权限的数据库名称。在这个例子中,新用户 `smkdb` 被赋予了对 `smkdb` 数据库的读写权限。
### 4. 导入数据库备份
最后,你使用 `mongorestore` 命令导入数据库备份:
```sh
mongorestore -u smkdb -p smkdb123 --db smkdb /data/db/mhd
```
这里的 `smkdb` 是用于连接到 MongoDB 的用户名,`smkdb123` 是密码,`--db smkdb` 指定了要导入到的数据库名称,`/data/db/mhd` 是备份文件的路径。
### 关系解释
- **第一个 `smkdb`**:这是你在创建 MongoDB 容器时设置的管理员账户,用于管理 MongoDB 实例。
- **第二个 `smkdb`**:这是你在 `use smkdb` 命令中指定的数据库名称,你在这个数据库中创建了一个新的用户。
- **第三个 `smkdb`**:这是你在 `db.createUser` 中创建的新用户,它被授权访问第二个 `smkdb` 数据库。
总结来说,第一个 `smkdb` 是管理员账户,第二个 `smkdb` 是数据库名称,第三个 `smkdb` 是你为这个数据库创建的用户。这些名称相同只是为了示例的简便,你可以为它们设置不同的名称以避免混淆。
docker run -it --name mymongo \ -v /Users/aqbook/mongodbdir:/data/db \ -p 27017:27017 \
mongo
问题一:
看起来`wget`命令也不可用。在这种情况下,您可以尝试使用`curl`命令来下载MongoDB客户端工具压缩包。以下是使用`curl`命令下载并安装MongoDB客户端工具的步骤:
1. 使用以下命令安装`curl`:
```
apt install -y curl
```
2. 下载MongoDB客户端工具压缩包:
```
curl -O https://fastdl.mongodb.org/tools/db/mongodb-database-tools-debian92-arm64-100.5.0.tgz
```
3. 解压缩下载的压缩包:
```
tar -zxvf mongodb-database-tools-debian92-arm64-100.5.0.tgz
```
4. 将解压后的文件夹移动到适当的位置,例如`/usr/local/bin`:
```
mv mongodb-database-tools-debian92-arm64-100.5.0 /usr/local/bin
```
5. 添加MongoDB客户端工具到系统PATH中:
```
export PATH=$PATH:/usr/local/bin/mongodb-database-tools-debian92-arm64-100.5.0/bin
```
6. 现在尝试连接到MongoDB实例:
```
mongo admin
```
通过这些步骤,您应该能够使用`curl`下载并安装MongoDB客户端工具,并成功连接到MongoDB实例。如果您遇到任何问题,请告诉我,我将尽力帮助您解决。祝您成功连接到MongoDB实例!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)