鲲鹏ARM64架构docker化MongoDB
鲲鹏ARM64架构docker化MongoDB
在 鹏城实验室开发者云平台 上,使用测试机
CentOS7系统环境(若无环境,请参考 鲲鹏arm64 CentOS7 虚拟机学习 )
在这上面本来打算直接安装MongoDB的,但是参照 鲲鹏软件栈官方文档 安装过程出现了一些依赖的问题,后续有时间会专门解决并发文;
于是选择使用docker容器,故本文使用docker搭建MongoDB。
docker环境(若无环境,请参考 鲲鹏920架构arm64版本centos7安装docker )
注1:使用 root 用户
注2:这篇文章上个月就该写的,一直没抽出时间来,今晚补上。
1、搜索mongo镜像
docker search mongo
2、拉取mongo镜像
docker pull mongo
- 注意:不加版本号,默认拉取 latest 最新版本
3、查看mongo镜像
docker images
-
- 注意:删除mongo镜像
-
docker rmi mongo
4、放行宿主机防火墙端口
参考之前博客 Linux防火墙放行端口
# 查看防火墙状态
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
# 放行单个端口
firewall-cmd --zone=public --add-port=666/tcp --permanent
# 放行多个端口
firewall-cmd --zone=public --add-port=111/tcp --add-port=222/tcp --permanent
# 生效放行 端口
firewall-cmd --reload
# 查看放行端口
firewall-cmd --list-ports
5、创建并运行容器(后台方式)
docker run --name mongo -d -v /home/mongo/data:/data/db -p 666:27017 mongo
- 参数含义:
参数 |
说明 |
–name |
创建的容器名,方便启动、关闭、重启、删除容器等操作 |
-d |
后台运行方式 |
-v |
宿主机目录映射到容器内部目录 |
-p |
宿主机端口 : docker容器端口 映射,可同时映射多个端口(-p 1234:1234 -p 5678:5678) |
- 注意:如果创建容器过程中出现下面这个报错 docker: Error response from daemon: driver failed programming external connectivity on endpoint mongo
-
- 解决办法:
- 1)删掉错误容器,
-
docker rm mongo
-
- 2)重启docker服务。
-
systemctl restart docker
-
- 再创建一个过过瘾
6、查看容器进程状态
docker ps -a
7、查看容器映射的本地目录
ls /home/mongo/data
ls /home/mongo/data-m2
8、进入mongo容器
docker exec -it mongo /bin/bash
9、查看mongo版本
mongo --version
10、mongo命令帮助命令
mongo --help
11、无密码连接mongo数据库
mongo --port 27017
12、mongo数据库 sql 帮助命令
help
13、查看mongo数据库名、集合、用户
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
> show collections
>
> show users
>
14、使用 admin 数据库
use admin
15、创建admin数据库用户并设置密码及权限
- root 用户,root 权限
db.createUser({user:"root",pwd:"mongo_123!",roles:[{role:'root',db:'admin'}]})
- admin用户,读写任何数据库 权限
db.createUser({user:'admin',pwd:'mongo_123$',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})
- user用户,读写数据库 权限
db.createUser({user:"user",pwd:"user123",roles:[{role:'readWrite',db:'admin'}]})
16、查看mongo中admin数据库用户
show users
17、修改mongo中admin数据库用户密码
以 user 用户为例
db.changeUserPassword('user','123456');
18、退出mongo数据库
-
- 退出sql命令行终端
- 退出mongo容器
exit
19、Navicat Premium 远程连接
-
- 鹏城实验室开发者云平台测试机内外网映射
- 内网ip:port 映射到 外网ip:port
- 15.0.0.48:666 >> 210.22.22.150:3735
IP:210.22.22.150 端口:3735 数据库 admin 用户 user 密码 123456
Navicat Premium 远程连接
20、关掉mongo容器
-
- 以关掉容器 mongo2 为例
-
docker stop mongo2
21、重启mongo容器
-
- 以重启容器 mongo2 为例
-
docker start mongo2
- 注意,重启直接 start 就行了
22、删除mongo容器
- 以删除容器 mongo2 为例
注意:
先关掉容器,再删除容器
(若要删除mongo镜像,先停掉mongo容器)
否则,会报错 Error response from daemon: You cannot remove a running container
-
- 先 stop 容器 mongo2
-
docker stop mongo2
- 再 rm 容器 mongo2
-
docker rm mongo2
-
- 注意,删掉容器 mongo2 不可恢复
- 回到 7、查看容器映射的本地目录
-
ls /home/mongo/data-m2/
-
- 发现映射目录好处的了么?删掉容器,但是映射的目录还在;
- 若创建容器时,不做映射目录,则不会保存容器数据,在下面容器单独解说。
23、mongo容器安全
关于使用docker容器,众说纷纭
以使用mongo容器为例,跟大家谈一谈容器如何做到安全?
23.1,第一、要清楚虚拟机跟容器的区别
-
- “虚拟机是虚拟出来一个新世界,每个实例都是一台单独的机器;而容器则是虚拟出来一个操作系统,每个应用彼此隔离。”
- 具体区别:
特性 |
虚拟机 |
Docker容器 |
启动速度 |
分钟级 |
秒级 |
硬盘使用 |
一般为GB |
一般为MB |
内存代价 |
较大 |
很小 |
运行密度 |
一般几十个 |
单机支持上千个容器 |
性能 |
弱于原生 |
接近原生 |
隔离性 |
完全隔离 |
安全隔离 |
迁移性 |
一般(速度慢) |
优秀(速度快) |
23.2,第二、要清楚传统安装MongoDB数据库跟mongo容器化的本质区别
- 具体区别:
区别 |
传统安装 |
容器化安装 |
安装环境 |
一般物理机(也有虚拟机) |
具备docker环境 |
安装效率 |
一般(单机、集群) |
较高(单机、集群) |
版本升级 |
数据库升级版本 |
重新部署 |
数据安全 |
主机存储,不能保证不丢失数据 |
Docker volumes不可靠,崩溃并未正确关闭,可能会损坏数据 |
运行环境 |
对IO要求较高,专用环境,本地运行 |
需要配置大量额外资源,但并不一定完全使用,从而造成资源浪费 |
网络问题 |
物理网络、虚拟机网络,较稳定 |
docker网络虚拟化,受底层虚拟化管理程序限制 |
数据库状态 |
系统故障,使应用程序崩溃,影响使用 |
编排容器解决单点故障,重启容器 |
隔离级别 |
隔离级别越多,获得的资源开销就越多 |
水平伸缩只能用于无状态计算服务,而不是数据库 |
端口映射 |
一般内网端口,外网通过物理防火墙做端口映射 |
创建容器时,宿主机端口 映射 容器内部端口 |
23.3,第三、数据挂载区别
区别 |
主机 |
容器 |
磁盘挂载方式 |
新加硬盘,直接使用挂载的磁盘存储数据 |
创建容器时,把挂载好的磁盘映射到容器内部目录 |
24、推荐个人原创docker容器系列文章
-
- 鲲鹏920架构arm64版本centos7安装docker
- docker 阿里云yum源
- 运维之docker启动失败Failed to start Docker Application Container Engine
- docker安装tomcat8并实现目录映射端口映射
- 查看当前容器的挂载信息docker inspect 容器名
- 鲲鹏916架构openEuler-arm64成功安装docker并跑通tomcat容器
- docker创建并运行centos7容器
- docker创建并运行ubuntu16.04容器
- docker快速搭建postgresql(CentOS7)
- CentOS7.7.1908-ppc64le成功安装docker
- CentOS7.7.1908-ppc64le上docker安装mariadb数据库
- Power服务器docker成功安装MySQL数据库
25、最后声明
创作辛苦!
白嫖党可三连(关注+点赞+分享),可白嫖,可转载。
请尊重原创不要抄袭!
请尊重原创不要抄袭!
请尊重原创不要抄袭!
目录 返回
首页