今日784人次阅读了139/155篇文章  |    留言板  |    RSS订阅
不就是钱嘛,说得谁不缺似的毒鸡汤

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

2021-04-06     loonlog     8136     13

本文目录

接触了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 , OpenMediaVault , Portainer , MariaDB , Adminer

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

您可能感兴趣的文章

发表评论(关于评论)

评论列表,共 13 条评论

  • 回复

    5楼

    感谢博主详细的介绍

  • 回复

    4楼

    报错:network xxnet: network.external.name is deprecated in favor of network.name" service "mariadb" refers to undefined network mysqlnet: invalid compose project。

    可以修改docker 配置文件,解决问题。

    最后网络部分配置的格式:

    networks:

        network(你自己配置的网络的名称):

            external: true

    网络名称那块换成自己的,其他不变。

  • 回复

    3楼

    我是安装nextcloud出现以下错误,主要是第一次安装失败,第二次安装时遇到该错误,作为反馈。

    Error response from daemon: readlink /var/lib/docker/overlay2: invalid argument

    错误信息

    // 查看pod 报错信息
    [root@k8s-3 ~]# kubectl -n kube-system describe po metrics-server-5cb9ff977-s28lm
    ...........
      Warning  InspectFailed  4m53s (x12 over 6m50s)  kubelet, k8s-3     Failed to inspect image "registry.cn-hangzhou.aliyuncs.com/ccgg/metrics-server-amd64:v0.3.3": rpc error: code = Unknown desc = Error response from daemon: readlink /var/lib/docker/overlay2: invalid argument
      Warning  Failed         4m38s (x13 over 6m50s)  kubelet, k8s-3     Error: ImageInspectError

    // 查看 kubelet 报错信息
    [root@k8s-3 ~]# journalctl -fu kubelet

    Sep 06 14:02:28 k8s-3 kubelet[1342]: E0906 14:02:28.096965    1342 pod_workers.go:190] Error syncing pod 1351dd58-9485-497c-b873-cf563add9c58 ("metrics-server-5cb9ff977-s28lm_kube-system(1351dd58-9485-497c-b873-cf563add9c58)"), skipping: failed to "StartContainer" for "metrics-server" with ImageInspectError: "Failed to inspect image "registry.cn-hangzhou.aliyuncs.com/ccgg/metrics-server-amd64:v0.3.3": rpc error: code = Unknown desc = Error response from daemon: readlink /var/lib/docker/overlay2: invalid argument"

    清理Docker占用的磁盘空间

     

    // 可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络
    [root@k8s-3 / ]docker system prune -a

    WARNING! This will remove:
            - all stopped containers
            - all networks not used by at least one container
            - all images without at least one container associated to them
            - all build cache
    Are you sure you want to continue? [y/N] y
    Deleted Images:

  • 回复

    2楼

    播主你好,按照您的方法安装成功了。表示感谢!

    同时也碰到一个问题:就是这个nextcloud他有一个默认的文件上传限制,就是不能上传超过512MB的文件。这个事情困扰我很久。

     

    因为这个NextCloud是Linux server提供的非官方版,我先是用site命令,找到了 LinuxServer.io 上一个类似的文章:

    https://discourse.linuxserver.io/t/swag-nextcloud-inreasing-max-upload-file-size/2888

    ——我按照这个提问的的人的方法去改,实测并不能解决问题。

     

    然后我又找到了Nextcluod官方的关于提升上传文件限制的文章:

    https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html

    ——这个文章说的步骤超级多,小白抱着必死的心一个一个也检查了一下,貌似也不能解决问题。

     

    我想问一下,您是怎么解决这个问题的。感谢。

     

    另外,您这个网站的验证码,真的超级难,我连续换了10几个才找到一个确认可以看清楚的,哈哈。

    菜鸟之志 粉丝 ,

    回复

    你好,我啥也没做,就能上传大文件呀,有次上传8G的文件,win客户端容易报错,然后继续传就可以了!

    粉丝 菜鸟之志 ,

    回复

    感谢回复!能不能麻烦您帮看一下您的 nextcloud 版本是多少,据说也有可能是版本问题。。。

     

    网站做得挺好的,看的出来也是精心维护的。楼主加油。

    菜鸟之志 粉丝 ,

    回复

    谢谢,我的使用很久了,也自动更新了,现在不能看到安装时候的版本了吧

    菜鸟之志 粉丝 ,

    回复

    你好,我重新安装NextCloud后也遇到了大于512M的文件上传问题,我的问题是解决了,你看下能不能解决你的问题:

    http://loonlog.com/2022/8/25/nextcloud-big-file-about-error/

    粉丝 菜鸟之志 ,

    回复

    报告楼主:用这个方法调整后,大文件问题已解决!

     

    感谢楼主! 特地来汇报,哈哈!

     

    我做了一台超小型的NAS,有空给你看下,嘿嘿。

    菜鸟之志 粉丝 ,

    回复

    期待你的杰作!

  • 回复

    1楼

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

    菜鸟之志 lutar ,

    回复

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

    lutar 菜鸟之志 ,

    回复

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

    谢谢您的分享!