在OpenMediaVault5(OMV5)上利用图形化Docker工具Portainer安装部署MariaDB和Adminer
2021-04-06     loonlog     8937     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
http://loonlog.com/2021/4/6/openmediavault-omv-docker-portainer-mariadb-adminer/
评论列表,共 13 条评论
回复
感谢博主详细的介绍
回复
报错: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
网络名称那块换成自己的,其他不变。
回复
我是安装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:
回复
播主你好,按照您的方法安装成功了。表示感谢!
同时也碰到一个问题:就是这个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,有空给你看下,嘿嘿。
回复
期待你的杰作!
回复
OMV-Extras能显示“内核”选项卡?你是用PC安装的吧?!我的树莓派是不能找到这个选项卡的。
回复
我的omv是装在实体机上,我的是可以显示内核!
回复
之前试过无数次安装,都不能登录Adminer,因为以上原因,所以我怀疑你是不是安装在普通电脑上。然而当我抱着试试的态度部署,居然成功了!
谢谢您的分享!