留言板  |    文章总数=122  |    RSS订阅
冬天就是好,穷的时候,还有西北风喝毒鸡汤

在OpenMediaVault5(OMV5)上利用图形化Docker工具Portainer部署MariaDB和Adminer

2021-04-06     loonlog     1717     3

本文目录

接触了NAS系统怎么能不接触Docker,走上了这个DIY的道路,怎么能停止折腾;我们在部署各种应用的时候,很多应用是需要数据库支持的,那我们又不想在每个容器中都装一套数据库,那就需要在装其他容器的时候,先把数据库容器先搞定,然后这个容器共享给其他容器使用。

大家的选择就是最好的选择,这里来说一说MariaDB数据库的容器部署!

一、打开Portainer可视化Docker管理工具

1、我的NAS是omv系统,进入OMV管理界面,找到左侧菜单的“系统”下面的“OMV-Extras”,在右侧导航栏找到“Docker”,然后点击“打开web页”进入到Portainer可视化Docker管理工具;

2、登录protainer,点击local

二、创建一个网络

Docker中的网络就相当于是路由器,加入到相同网络的容器可以使用容器名称相互访问,这样网络就可以把相关容器规划在一个相对封闭的环境中,在一定程度上能够提升一定的安全性;我们想让很多容器都去访问这个MariaDB数据库,就要让这些容器在同一个网络下,具有便利性和安全性。

1、点击左侧菜单“Networks”,点击上方蓝色的“+Add network”来添加网络;

2、进入界面,在“Name”里面输入这个网络的名称,这个名称大家随意,我就命名为xxnet;输入完名称之后就可以点击最下面的”Create the network”来创建网络,网络创建完成以后就可以点击左侧菜单中的Stacks开始创建stack;

三、创建stack

Stack就是Docker Compose的图形化管理界面,Docker Compose是用来一次性创建和管理多个相互关联的容器工具,里面的代码是使用文本缩进来来区分各项设置的层级,配置文件在所使用的镜像官方网站是有相关介绍的;

1、点击左侧菜单“Stacks”开始创建stack,点击上方蓝色的“+Add stack”;

2、首先在Name框里面输入一个Stack的名称,这个stack是配置MariaDB容器的,就输入mariadb作为MariaDB的stack名称;然后在下方的编辑框中输入Stack的配置文件,或者说是Docker Compose的配置文件,这个配置文件是yml格式,包含了容器所需要的各种配置。

3、Docker Compose的配置文件如下:

---
version: "2"
services:
  mariadb:
    image: linuxserver/mariadb
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=100
      - MYSQL_ROOT_PASSWORD=xxnas123456
      - TZ=Asia/Shanghai
    volumes:
      - /srv/dev-disk-by-id-ata-JMicron_H_W_RAID5_BPPWFWRGNRNH48JWOGVZ-part1/AppData/MariaDB/config:/config
    ports:
      - 3306:3306
    networks:
      - xxnet
    restart: unless-stopped
  
  adminer:
    image: adminer
    container_name: adminer
    environment:
      - ADMINER_DEFAULT_SERVER=mariadb
    ports:
      - 8088:8080
    networks:
      - xxnet
    restart: unless-stopped
networks:
  xxnet:
    external:
      name: xxnet

这里的配置文件在Services的下面有mariadb和adminer这两项,分别对应着我们要创建的两个应用容器,他们的下面就是相应容器创建时所需要设置的一些参数

4、对上面Docker Compose的配置文件做如下解释,因为我是菜鸟,这样可以使我加深印象:

先看mariadb容器


image: linuxserver/mariadb

这里使用的是LinuxServer维护的Mariadb,镜像地址https://hub.docker.com/r/linuxserver/mariadb


container_name: mariadb

这里是容器的名称;


environment是环境变量:

- PUID=1000
- PGID=100

当我们给容器挂载了NAS上创建的共享文件夹作为存储使用的时候,默认情况下容器会使用root,也就是以超级管理员的身份去对这个共享文件夹进行读写操作;对于写入到共享文件夹中的文件,在NAS上以普通用户的身份是没有权限去做修改的;如果使用NAS上普通用户的身份去读写共享文件夹上的数据,就需要通过PUID来指定一个普通用户的ID,用PGID来指定一个用户组的ID,设置了这两个环境变量以后,容器就会使用我们指定的用户身份对共享文件夹进行读写操作,这样一来,我们就可以使用NAS上有权限的普通用户对共享文件夹进行读写操作了;但需要注意的是,只有LinuxServer维护的镜像提供了PUID和PGID的设置功能,其他镜像需要参照镜像的说明文件去了解是否有这项功能。

PUID和PGID的获取,可以参考部署jellyfin的的文章中介绍的方法进行,这里不再重复!


- MYSQL_ROOT_PASSWORD=xxnas123456

用来设置Mariadb root管理员用户的密码,我们这里自己定义一个密码即可;


- TZ=Asia/Shanghai

设置时区


在官方的配置文件中还有几句是用来创建数据库名称、此数据库权限用户和用户密码的语句,如下

- MYSQL_DATABASE=USER_DB_NAME #optional
- MYSQL_USER=MYSQL_USER #optional
- MYSQL_PASSWORD=DATABASE_PASSWORD #optional

本文忽略这几项,因为我们可以使用下面即将介绍的Adminer客户端来创建数据库和用户以及密码,可视化操作界面,比较好用。


volumes用来设置挂在到容器中的存储,

默认的“- mariadb_data:/config”语句会创建一个名为mariadb_data的数据卷来持久化的保存数据库中的数据以及数据库中的配置文件,为了便于数据库的备份以及数据库配置文件的修改,我们可以为Mariadb创建一个专用的共享文件夹,用

- /srv/dev-disk-by-id-ata-JMicron_H_W_RAID5_BPPWFWRGNRNH48JWOGVZ-part1/AppData/MariaDB/config:/config

这一句代替默认的语句,关于这个路径的问题,在部署jellyfin的的文章中已经有介绍,之前创建了一个用于保存数据和配置文件的共享文件夹,这个文件夹的名字就是AppData,在这个文件夹中已经为jellyfin的容器创建了名字为jellyfin的共享文件夹,那么这次我们就在AppData文件夹下再创建一个用于存放Mariadb的数据和配置文件的共享文件夹;

这里的文件夹的创建,可以参考部署jellyfin的的文章中介绍的方法进行,这里不再重复!


ports:
      - 3306:3306

端口映射,这里Mariadb暴露了3306端口,这项设置让mynet网络之外的设备也能够访问到容器中的数据库,因为后续我们Nextcloud也会加入到mynet网络,因此,如果你不需要要为其他外部应用提供数据库服务的话,可以删除掉端口映射的设置;


networks:
      - xxnet

这里就是我们要加入的网络,我们在第三步已经创建了一个xxnet的网络,这里就使用上了;


restart: unless-stopped

重启策略,当应用停止的时候就要重启容器;


再来看看adminer容器的配置


image: adminer

docker官方维护的镜像;


container_name: adminer

容器名称;


environment:
      - ADMINER_DEFAULT_SERVER=mariadb

环境变量配置为Adminer默认连接的服务器,并且指定为Mariadb,也就是上设置的Mariadb,因为在同一个网络中,所以容器之间是可以使用容器的名称进行连接的;


ports:
      - 8088:8080

adminer暴露了一个8080端口,我们可以使用NAS的ip地址加上8080端口来访问到Adminer的管理界面 #如果我们的NAS主机或者其他容器已经占用了8080端口,那么我们在这里就不能再使用8080这个端口了,我们需要更改冒号前面的这个端口,使用未被占用的端口,冒号前面的这个端口就是要暴露再外面访问的端口,冒号后面这个端口就是容器中所对应的应用的端口;


networks:
      - xxnet

这里就是我们要加入的网络,在上面已经配置过的;


restart: unless-stopped

重启策略,当应用停止的时候就要重启容器,和上面一样;


networks:
  xxnet:
    external:
      name: xxnet

这里用来设置上面Stack可以连接的网络,网络名称要改为自己创建的那个网络


5、Docker Compose输入完实际的配置之后,就可以点击下方的“Deploy the stack”来创建Stack;

四、查看创建的容器

1、建完成后,就可以点击stack查看以下,可以看到刚才创建的两个容器,分别是mariadb和adminer,

2、再切换到network菜单里面,看一下mynet网络也可以看到Mariadb和Adminer都加入到了mynet网络中来

五、登录Adminer的管理页面进行数据库的管理

我们使用NAS的ip地址加上8088端口来访问一下Adminer的管理界面,使用root用户,使用上面设置的密码进行登录,以后对数据口的管理操作都通过Adminer的在线管理界面进行。


至此,完成MariaDB数据库的容器部署!

Docker , Adminer , Portainer , OpenMediaVault , MariaDB

在OpenMediaVault5(OMV5)上利用图形化Docker工具Portainer部署MariaDB和Adminer
http://loonlog.com/2021/4/6/openmediavault-omv-docker-portainer-mariadb-adminer/
    觉得有用?请点击页面顶部广告支持我!

您可能感兴趣的文章

发表评论(关于评论)

评论列表,共 3 条评论

  • 回复

    1楼

    OMV-Extras能显示“内核”选项卡?你是用PC安装的吧?!我的树莓派是不能找到这个选项卡的。

    菜鸟之志 lutar ,

    回复

    我的omv是装在实体机上,我的是可以显示内核!

    lutar 菜鸟之志 ,

    回复

    之前试过无数次安装,都不能登录Adminer,因为以上原因,所以我怀疑你是不是安装在普通电脑上。然而当我抱着试试的态度部署,居然成功了!

    谢谢您的分享!