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")