"该资源是关于使用Docker创建带有密码认证的MongoDB容器的教程。"
在Docker中创建一个配置了密码认证的MongoDB实例是运维工作中常见且重要的任务,这有助于提升数据库的安全性。这里提供的方法描述了如何通过Docker运行MongoDB容器,并在启动时设置root用户的用户名和密码。
首先,我们需要准备一个配置文件`mongo.conf`,这个文件包含了MongoDB服务器的网络、存储以及安全相关的配置。在`/root/mongo`目录下创建该文件,文件内容如下:
```text
net:
port: 27017
bindIp: "0.0.0.0"
storage:
dbPath: "/data/db"
security:
authorization: enabled
```
- `net.port:27017`:指定MongoDB监听的端口,这里是默认的27017。
- `bindIp:"0.0.0.0"`:表示MongoDB服务将监听所有可用的网络接口,这样可以从任何地方访问容器内的MongoDB服务。
- `storage.dbPath:"/data/db"`:设置数据存储路径,这里的路径是相对于容器内部的。
- `security.authorization:enabled`:开启权限认证,这是添加密码认证的关键步骤。
接下来,我们使用Docker运行MongoDB容器,命令如下:
```bash
docker run -itd --name mongo5 --network dlrs-net --restart=always -p 27022:27017 -v /data/mongo:/etc/mongo -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=fp123 -d mongo:4.4.2 --config /etc/mongo/mongo.conf
```
- `docker run`:启动一个新的Docker容器。
- `-itd`:交互式(i)、后台运行(t)、守护进程模式(d)。
- `--name mongo5`:为容器命名。
- `--network dlrs-net`:连接到名为`dlrs-net`的网络。
- `--restart=always`:设置容器在Docker守护进程启动时自动重启。
- `-p 27022:27017`:端口映射,主机的27022端口映射到容器的27017端口。
- `-v /data/mongo:/etc/mongo`:挂载主机的`/data/mongo`目录到容器的`/etc/mongo`,使得配置文件可以被容器读取。
- `-e MONGO_INITDB_ROOT_USERNAME=admin`:设置环境变量,用于初始化root用户的用户名。
- `-e MONGO_INITDB_ROOT_PASSWORD=fp123`:设置环境变量,用于初始化root用户的密码。
- `-d mongo:4.4.2`:使用mongo镜像的4.4.2版本。
- `--config /etc/mongo/mongo.conf`:指定配置文件路径。
这个命令会启动一个MongoDB容器,配置文件已经包含了权限认证的设置,并且在启动时会自动创建root用户,用户名为`admin`,密码为`fp123`。
在实际应用中,根据需求可能还需要配置其他安全措施,如设置防火墙规则限制访问,或者配置复制集以实现高可用。同时,密码应尽可能复杂且定期更换,以提高安全性。对于生产环境,还建议配置额外的用户并赋予适当的权限,而非仅依赖root用户进行所有操作。