Docker安装MongoDB

352 阅读4分钟

拉取mongo镜像

docker pull mongo:4.4

image.png

创建目录存放mongodb数据

mkdir -p /docker_volume/mongodb/data

这个命令是在Linux系统中创建目录的命令,具体含义如下:

  • mkdir: 这是"make directory"的缩写,意为创建目录的命令。
  • -p: 这个选项表示如果父级目录不存在,也会一同创建。换句话说,如果要创建的目录的上层目录不存在,该选项会自动创建上层目录。
  • /docker_volume/mongodb/data: 这是要创建的目录的路径。在这个例子中,它指的是一个名为"mongodb"的文件夹,其中包含名为"data"的子文件夹,而整个路径则位于名为"docker_volume"的根文件夹下。

综上所述,这个命令的意思是在Linux系统中创建一个目录结构,包括名为"docker_volume"的根文件夹,其下包含名为"mongodb"的文件夹,而"mongodb"文件夹中又包含名为"data"的子文件夹。如果相关目录不存在,这个命令会自动创建它们。

cd /进入 /目录执行 mkdir -p /docker_volume/mongodb/data
image.png

运行容器:

docker run -itd --name mongo -v /docker_volume/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth

这个命令用于在Docker中运行MongoDB容器,实现了数据卷挂载、端口映射和启用认证等功能。具体含义如下:

  • docker run: 这是运行Docker容器的命令。
  • -itd: 这是选项的组合,具体含义如下:
    • -i: 表示要求分配一个交互式终端(stdin)。
    • -t: 表示分配一个终端。
    • -d: 表示容器在后台运行(以分离模式)。
  • --name mongo: 这个选项指定了容器的名称,本例中为"mongo"。
  • -v /docker_volume/mongodb/data:/data/db: 这个选项实现了数据卷挂载,将主机上的/docker_volume/mongodb/data目录挂载到容器内的/data/db目录,从而实现了数据的持久化存储。
  • -p 27017:27017: 这个选项实现了端口映射,将主机的27017端口映射到容器内的27017端口,从而可以通过主机的27017端口访问容器内的MongoDB服务。
  • mongo:4.4: 这是要运行的Docker镜像的名称和版本。在这个例子中,使用了MongoDB 4.4的官方镜像。
  • --auth: 这个选项启用了MongoDB的身份验证(认证)功能,需要用户名和密码才能访问数据库。

综上所述,这个命令会在Docker中启动一个名为"mongo"的容器,使用MongoDB 4.4镜像,将主机上的/docker_volume/mongodb/data目录挂载到容器内的/data/db目录,同时将主机的27017端口映射到容器内的27017端口。容器将在后台运行,并启用MongoDB的身份验证功能。

image.png


登录mongo容器,并进入到【admin】数据库

docker exec -it mongo mongo admin

这是一个使用 Docker 命令行工具运行 MongoDB 容器并连接到 MongoDB 数据库的命令。 解释一下这个命令的每个部分:

  1. docker exec: 这是 Docker 命令行工具的一部分,用于在正在运行的容器中执行命令。
  2. -it: 这是两个选项的组合,表示“交互式终端”。它允许你在容器内部启动一个交互式会话,以便你可以与容器中运行的命令进行交互。
  3. mongo: 这是要在容器内运行的命令。在这种情况下,它是 MongoDB 数据库的命令行客户端。
  4. admin: 这是一个参数,指定要连接的 MongoDB 数据库的名称。在这里,它是连接到 MongoDB 的 "admin" 数据库,这是一个通常用于管理和配置的系统级数据库。

综合起来,这个命令的作用是在运行的 MongoDB 容器中启动 MongoDB 的命令行客户端,并连接到 "admin" 数据库。这允许你在容器内部执行与 MongoDB 数据库相关的操作,例如查看数据库状态、执行管理操作等。

image.png

创建一个用户,mongo 默认没有用户

db.createUser({ user:'root',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});

db.createUser({

user: 'root', // 用户名

pwd: '123456', // 密码

roles: [

{ role: 'userAdminAnyDatabase', db: 'admin' }, // 在admin数据库具有userAdminAnyDatabase角色

'readWriteAnyDatabase' // 具有readWriteAnyDatabase角色

]

});

image.png
exit 退出
image.png

使用Navicat连接

sp230830_152832.png