Docker MongoDB 部署

Docker MongoDB 部署

MongoDB 是一款较为常用的NOSQL 数据库,结合 Docker 使用,能实现轻松配置部署、迁移,本文以下为简要介绍如何在 Docker 中部署并使用 MongoDB。下文主要分为几个部分,内容如下:

MongoDB 镜像安装
MongoDB 容器创建
MongoDB 容器数据目录挂载
MongoDB 数据迁移
MongoDB 常用 Docker 命令

MongoDB 镜像安装

MongoDB 提供官方镜像,下载安装镜像方法如下:

[root@VM_0_14_centos ~]# docker pull mongo
Using default tag: latest
Trying to pull repository docker.io/library/mongo ... 
latest: Pulling from docker.io/library/mongo
5667fdb72017: Pulling fs layer 
d83811f270d5: Download complete 
ee671aafb583: Download complete 
7fc152dfb3a6: Download complete 
03aed45eacfa: Download complete 
fd39a24fb60d: Waiting 
c7e32874fe81: Waiting 
c312ac5dfe94: Waiting 
12b385d15d17: Waiting 
eb8902ddb753: Waiting 
01793a9aa271: Waiting 
a109619183a4: Waiting 
b8c58fcba751: Waiting 

以上命令为安装 MongoDB 最新版本的镜像。

MongoDB Docker 容器创建

MongoDB Docker 容器创建有以下几个问题:
1- MongoDB 容器基本创建方法和数据目录挂载
2- MongoDB 容器的数据迁移
3- MongoDB 设置登录权限问题

MongoDB 容器基本创建方法和数据目录挂载

MongoDB 容器基本创建命令如下:

[root@VM_0_14_centos mongodb]# docker run -p 27017:27017 -v /usr/local/mongodb/data/:/data/db --name docker_mongodb -d mongo

在上面的命令中,几个命令参数的详细解释如下:
-p 指定容器的端口映射,mongodb 默认端口为 27017
-v 为设置容器的挂载目录,这里是将/usr/local/mongodb/data/即本机中的目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
–name 为设置该容器的名称
-d 设置容器以守护进程方式运行

[root@VM_0_14_centos data]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                      NAMES
63689e18c325        mongo               "docker-entrypoint..."   About a minute ago   Up About a minute   0.0.0.0:27017->27017/tcp   docker_mongodb

MongoDB 容器关闭

[root@VM_0_14_centos ~]# docker kill 63689e18c325

63689e18c325容器ID

MongoDB 添加验证启动

[root@VM_0_14_centos ~]# docker run -p 27017:27017 -v /usr/local/mongodb/data/:/data/db --name docker_mongodb1 -d mongo --auth

如果加需要验证就加–auth,不需要验证,就去掉。默认mongodb是不使用用户认证

添加账号

[root@VM_0_14_centos ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                      NAMES
66db1329c16e        finance11           "java -Djava.secur..."   2 days ago          Up 2 days           0.0.0.0:8011->8011/tcp     finance
1f2f440634d9        eureka_server       "java -Djava.secur..."   2 days ago          Up 2 days           0.0.0.0:8761->8761/tcp     ecstatic_lewin
991243c05233        mongo               "docker-entrypoint..."   10 days ago         Up 10 days          0.0.0.0:27017->27017/tcp   docker_mongodb1
675f12c6e3d4        registry            "/entrypoint.sh /e..."   3 weeks ago         Up 10 days          0.0.0.0:5000->5000/tcp     myregistry
[root@VM_0_14_centos ~]# docker exec -it mongo /bin/bash
Error response from daemon: No such container: mongo
[root@VM_0_14_centos ~]# docker exec -it 991243c05233 /bin/bash



//使用admin数据库
use admin

//给admin数据库添加管理员用户名和密码,用户名和密码请自行设置
db.createUser({user:"admin",pwd:"123456",roles:["root"]})

//验证是否成功,返回1则代表成功
db.auth("admin", "123456")

//切换到要设置的数据库,以test为例
use test

//为test创建用户,用户名和密码请自行设置。
db.createUser({user: "test", pwd: "123456", roles: [{ role: "dbOwner", db: "test" }]})

db.auth("test","123456")
使用Docker部署MongoDB有以下几个步骤: 1. 首先,你需要获取最新的MongoDB镜像。可以使用以下命令来获取最新的镜像: ``` docker pull mongo:latest ``` 2. 接下来,创建一个目录用于存储MongoDB的数据文件。可以使用以下命令创建目录: ``` mkdir -p /export/server/docker/mongodb/data ``` 3. 运行MongoDB容器并进行映射和认证设置。可以使用以下命令运行镜像: ``` docker run --name mongodb -v /export/server/docker/mongodb/data:/data/db -d -p 27017:27017 mongo --auth ``` 这个命令中,`-v`参数用于将宿主机的目录映射到容器内的目录,以实现数据持久化。`-p`参数用于将容器内的端口映射到宿主机上,以便在宿主机上连接MongoDB。`--auth`参数表示需要密码才能访问容器服务。 4. 使用Mongo Shell连接到MongoDB容器并切换到admin数据库。可以使用以下命令: ``` docker exec -it mongodb /bin/mongosh admin ``` 或者 ``` docker exec -it mongodb /bin/bash /bin/mongosh admin ``` 这个命令将以Mongo Shell的方式进入容器,并切换到admin数据库。 5. 创建一个管理员用户并授予相应的权限,并使用新创建的用户进行登录。可以使用以下命令: ``` db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); db.auth('admin', '123456') ``` 这个命令将创建一个名为admin的用户,并赋予userAdminAnyDatabase和readWriteAnyDatabase的角色,然后使用新创建的用户进行登录。 6. 进行一些基本的测试操作,比如查看数据库和表,并插入一条数据。可以使用以下命令: ``` show databases # 查看所有数据库 show tables # 查看所有表(集合) use test # 切换到test数据库(如果不存在则自动创建) db.test.insert( { _id: 1, name: "kudaren", age: "29" } ) # 插入数据 db.test.find(); # 查询数据 ``` 7. 最后,你可以使用适合你的客户端工具连接到MongoDB进行操作。 总结:Docker部署MongoDB需要先获取最新的镜像,创建数据文件存储目录,运行镜像并进行映射和认证设置,然后使用Mongo Shell连接到容器并进行操作,最后可以使用客户端工具连接到MongoDB进行管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值