鲲鹏ARM64架构docker化MongoDB

鲲鹏ARM64架构docker化MongoDB

鹏城实验室开发者云平台 上,使用测试机

CentOS7系统环境(若无环境,请参考 鲲鹏arm64 CentOS7 虚拟机学习

在这里插入图片描述

在这上面本来打算直接安装MongoDB的,但是参照 鲲鹏软件栈官方文档 安装过程出现了一些依赖的问题,后续有时间会专门解决并发文;

于是选择使用docker容器,故本文使用docker搭建MongoDB。

docker环境(若无环境,请参考 鲲鹏920架构arm64版本centos7安装docker

在这里插入图片描述

注1:使用 root 用户

注2:这篇文章上个月就该写的,一直没抽出时间来,今晚补上。

img

img

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHedREWY-1600847044896)(C:\Users\91852\AppData\Roaming\Typora\typora-user-images\image-20200922221405086.png)]

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容器系列文章

25、最后声明

创作辛苦!

白嫖党可三连(关注+点赞+分享),可白嫖,可转载。

请尊重原创不要抄袭

请尊重原创不要抄袭

请尊重原创不要抄袭


猜你喜欢

转载自blog.csdn.net/frdevolcqzyxynjds/article/details/108754541