前言
Docker 是一种快速部署应用程序的解决方案,它使用虚拟容器来隔离应用程序和操作系统之间,因此可以方便地在不同的机器和环境中更快速地部署应用程序。MongoDB 是一种非关系数据库,它使用文档存储和 NoSQL 数据库的数据存储方式,受到很多程序员的青睐。本文主要介绍在 Docker 容器内安装 MongoDB 及其配置详解。
安装 MongoDB
1. 下载 MongoDB 镜像
首先,我们需要下载 MongoDB 镜像。在终端中输入以下命令:
docker pull mongo
2. 创建 MongoDB 容器
接着,在终端中输入以下命令创建 MongoDB 容器:
docker run -it -d --name mongo -p 27017:27017 mongo
上述命令中的参数 -it
表示新建的容器使用交互式终端;-d
表示容器在后台运行;--name
表示给容器取个名字叫 mongo
;-p
表示将容器内的 27017
端口映射到宿主机的 27017
端口。这样,我们就成功创建了一个 MongoDB 容器。
3. 进入容器
然后,我们需要进入容器,使用以下命令:
docker exec -it mongo bash
4. 启动 MongoDB
在容器中运行以下命令启动 MongoDB:
service mongod start
MongoDB 配置
1. 访问 MongoDB
接着,我们需要在宿主机上用客户端访问 MongoDB。可以使用 MongoDB 自带的客户端 mongo
,在终端中输入以下命令:
mongo --host=localhost --port=27017
这里,--host
表示访问的主机名或 IP 地址,我们使用本机 localhost
;--port
表示访问的端口号。
2. 建立数据库及用户
在 MongoDB 中,需要先创建 database
,然后创建 user
,可以使用以下命令完成:
use mydb db.createUser({user:"myuser",pwd:"mypwd",roles:["readWrite"]})
这里,use mydb
表示使用 mydb
数据库;db.createUser()
函数用于创建用户,user
和 pwd
分别表示用户名和密码,roles
表示用户权限。
3. 配置 MongoDB 安全
接下来,我们需要修改 MongoDB 的配置,设置其安全模式。使用以下命令进入 MongoDB 的配置文件:
vim /etc/mongod.conf
然后,找到 security
一节,修改以下内容:
security: authorization: "enabled"
保存并退出。然后重启 MongoDB:
service mongod restart
4. 使用用户名和密码登录 MongoDB
最后,我们需要使用用户名和密码登录 MongoDB,运行以下命令:
mongo --host=localhost --port=27017 -u myuser -p
这里,-u
表示用户名,-p
表示密码。登录成功后,就可以使用 MongoDB 提供的 API 来进行数据存储和查询了。
示例代码
以下是一个简单的 Node.js 应用程序,使用 MongoDB 存储数据:
-- -------------------- ---- ------- -- -- ------- -- ----- ----------- - ------------------------------- -- -------------- ----- --- - ---------------------------------------------- -- -- ------- ------------------------ ------------- --- - -- ----- ----- ---- ----------------------- -- ----------- ----- --- - -------------- ----- ----- - - ----- -------- ---- ---------------------- -- --------------------------------------- ------------- ---- - -- ----- ----- ---- ---------------------- ----------- --- ---
总结
本文介绍了在 Docker 容器内安装 MongoDB 及其配置详解,希望读者能够掌握 MongoDB 的基本安装和配置,并能够使用 MongoDB 存储和查询数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6458d679968c7c53b0b25029