虚拟化容器,大数据,DBA,中间件,监控。

鲲鹏ARM64架构docker化MongoDB

05 03月
作者:admin|分类:应用管理


鲲鹏ARM64架构docker化MongoDB


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

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

鲲鹏ARM64架构docker化MongoDB_docker

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

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

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

鲲鹏ARM64架构docker化MongoDB_centos_02



注1​:使用 root 用户

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


鲲鹏ARM64架构docker化MongoDB_centos_03

鲲鹏ARM64架构docker化MongoDB_docker_04

1、搜索mongo镜像

docker search mongo

鲲鹏ARM64架构docker化MongoDB_centos_05

2、拉取mongo镜像

docker pull mongo

鲲鹏ARM64架构docker化MongoDB_数据库_06

  • 注意​:不加版本号,默认拉取 latest 最新版本

3、查看mongo镜像

docker images

鲲鹏ARM64架构docker化MongoDB_mongodb_07


  • 注意:删除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

鲲鹏ARM64架构docker化MongoDB_mongodb_08

鲲鹏ARM64架构docker化MongoDB_数据库_09

5、创建并运行容器(后台方式)

docker run --name mongo -d -v /home/mongo/data:/data/db -p 666:27017 mongo

鲲鹏ARM64架构docker化MongoDB_docker_10

  • 参数含义:

参数

说明

–name

创建的容器名,方便启动、关闭、重启、删除容器等操作

-d

后台运行方式

-v

宿主机目录映射到容器内部目录

-p

宿主机端口 ​:​ docker容器端口 映射,可同时映射多个端口(-p 1234:1234 -p 5678:5678)

  • 注意​:如果创建容器过程中出现下面这个报错 ​docker: Error response from daemon: driver failed programming external connectivity on endpoint mongo

鲲鹏ARM64架构docker化MongoDB_arm_11


  • 解决办法:
  • 1)删掉错误容器,
  • ​docker rm mongo ​
  • 鲲鹏ARM64架构docker化MongoDB_centos_12
  • 2)重启docker服务。
  • ​systemctl restart docker ​
  • 鲲鹏ARM64架构docker化MongoDB_docker_13
  • 再创建一个​过过瘾

鲲鹏ARM64架构docker化MongoDB_centos_14

6、查看容器进程状态

docker ps -a

鲲鹏ARM64架构docker化MongoDB_mongodb_15

7、查看容器映射的本地目录

ls /home/mongo/data
ls /home/mongo/data-m2

鲲鹏ARM64架构docker化MongoDB_centos_16

8、进入mongo容器

docker exec -it mongo /bin/bash

鲲鹏ARM64架构docker化MongoDB_centos_17

9、查看mongo版本

mongo --version

鲲鹏ARM64架构docker化MongoDB_mongodb_18

10、mongo命令帮助命令

mongo --help

鲲鹏ARM64架构docker化MongoDB_centos_19

11、无密码连接mongo数据库

mongo --port 27017

鲲鹏ARM64架构docker化MongoDB_数据库_20

12、mongo数据库 sql 帮助命令

help

鲲鹏ARM64架构docker化MongoDB_mongodb_21

13、查看mongo数据库名、集合、用户

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
>
> show collections
>
> show users
>

鲲鹏ARM64架构docker化MongoDB_数据库_22

14、使用 admin 数据库

use admin

鲲鹏ARM64架构docker化MongoDB_docker_23

15、创建admin数据库用户并设置密码及权限

  • root 用户,​root​ 权限
db.createUser({user:"root",pwd:"mongo_123!",roles:[{role:'root',db:'admin'}]})

鲲鹏ARM64架构docker化MongoDB_mongodb_24

  • admin用户,​读写任何数据库​ 权限
db.createUser({user:'admin',pwd:'mongo_123$',roles:[{role:'readWriteAnyDatabase',db:'admin'}]})

鲲鹏ARM64架构docker化MongoDB_数据库_25

  • user用户,​读写数据库​ 权限
db.createUser({user:"user",pwd:"user123",roles:[{role:'readWrite',db:'admin'}]})

鲲鹏ARM64架构docker化MongoDB_mongodb_26

16、查看mongo中admin数据库用户

show users

鲲鹏ARM64架构docker化MongoDB_arm_27

17、修改mongo中admin数据库用户密码

以 ​user​ ​用户​为例

db.changeUserPassword('user','123456');

鲲鹏ARM64架构docker化MongoDB_arm_28

18、退出mongo数据库


  • 退出sql命令行终端
  • 退出mongo容器

exit

鲲鹏ARM64架构docker化MongoDB_centos_29

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 远程连接

鲲鹏ARM64架构docker化MongoDB_docker_30

鲲鹏ARM64架构docker化MongoDB_mongodb_31

鲲鹏ARM64架构docker化MongoDB_docker_32

鲲鹏ARM64架构docker化MongoDB_mongodb_33

鲲鹏ARM64架构docker化MongoDB_centos_34

鲲鹏ARM64架构docker化MongoDB_数据库_35

20、关掉mongo容器


  • 以关掉容器 ​mongo2​ 为例
  • ​docker stop mongo2 ​

鲲鹏ARM64架构docker化MongoDB_数据库_36

21、重启mongo容器


  • 以重启容器 ​mongo2​ 为例
  • ​docker start mongo2 ​

鲲鹏ARM64架构docker化MongoDB_centos_37

  • 注意,重启直接 start 就行了

22、删除mongo容器

  • 以删除容器 ​mongo2​ 为例


注意:

先关掉容器,再删除容器

(若要删除mongo镜像,先停掉mongo容器)

否则,会报错 ​Error response from daemon: You cannot remove a running container

鲲鹏ARM64架构docker化MongoDB_docker_38



  • 先 ​stop​ 容器 mongo2
  • ​docker stop mongo2 ​
  • 再 ​rm​ 容器 mongo2
  • ​docker rm mongo2 ​

鲲鹏ARM64架构docker化MongoDB_数据库_39


  • 注意,删掉容器 mongo2 不可恢复
  • 回到 7、查看容器映射的本地目录
  • ​ls /home/mongo/data-m2/ ​

鲲鹏ARM64架构docker化MongoDB_centos_40


  • 发现映射目录好处的了么?删掉容器,但是映射的目录还在;
  • 若创建容器时,不做映射目录,则不会保存容器数据,在下面容器单独解说。

23、mongo容器安全


关于使用docker容器,众说纷纭

以使用mongo容器为例,跟大家谈一谈容器如何做到安全?


23.1,第一、要清楚虚拟机跟容器的区别


  • “虚拟机是虚拟出来一个新世界,每个实例都是一台单独的机器;而容器则是虚拟出来一个操作系统,每个应用彼此隔离。”
  • 具体区别:

特性

虚拟机

Docker容器

启动速度

分钟级

秒级

硬盘使用

一般为GB

一般为MB

内存代价

较大

很小

运行密度

一般几十个

单机支持上千个容器

性能

弱于原生

接近原生

隔离性

完全隔离

安全隔离

迁移性

一般(速度慢)

优秀(速度快)

23.2,第二、要清楚传统安装MongoDB数据库跟mongo容器化的本质区别

  • 具体区别:

区别

传统安装

容器化安装

安装环境

一般物理机(也有虚拟机)

具备docker环境

安装效率

一般(单机、集群)

较高(单机、集群)

版本升级

数据库升级版本

重新部署

数据安全

主机存储,不能保证不丢失数据

Docker volumes不可靠,崩溃并未正确关闭,可能会损坏数据

运行环境

对IO要求较高,专用环境,本地运行

需要配置大量额外资源,但并不一定完全使用,从而造成资源浪费

网络问题

物理网络、虚拟机网络,较稳定

docker网络虚拟化,受底层虚拟化管理程序限制

数据库状态

系统故障,使应用程序崩溃,影响使用

编排容器解决单点故障,重启容器

隔离级别

隔离级别越多,获得的资源开销就越多

水平伸缩只能用于无状态计算服务,而不是数据库

端口映射

一般内网端口,外网通过物理防火墙做端口映射

创建容器时,宿主机端口 映射 容器内部端口

23.3,第三、数据挂载区别

区别

主机

容器

磁盘挂载方式

新加硬盘,直接使用挂载的磁盘存储数据

创建容器时,把挂载好的磁盘映射到容器内部目录

24、推荐个人原创docker容器系列文章

25、最后声明

创作辛苦!

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

请尊重原创​不要抄袭​!

请尊重原创​不要抄袭​!

请尊重原创​不要抄袭​!



浏览465 评论0
返回
目录
返回
首页
SonarQube--安装与使用 一款检测数据中心安全防护能力的开源工具