各类NAS系统,使用docker compose的方法
本文最后更新于 2024-07-28,文章内容可能已经过时。
大家好,这里是Cherry,喜爱折腾、捡垃圾、玩数码,热衷于分享NAS、docker玩耍经验~
| 前言
各位爱玩耍NAS的小伙伴们,你们对docker的使用熟悉程度如何呢?部署docker的时候你们会不会把所有的部署指令统统复制到txt文档里,每次使用的时候再翻出来重新复制一遍呢?
DUCK不必!
随着docker被墙,国内镜像库良莠不齐,阿里云斩断非ecs供给,cloudflare开始大规模删号,玩耍docker的难度变得越来越高了,以往随便下载的镜像现在都不敢删、舍不得删,存在硬盘里占用空间。
在这样高难度的玩耍过程中,记忆docker指令又是一个学习成本高且麻烦的事。毕竟玩耍NAS不是为了学习,要学docker这里复杂的指令和工具,还不如某海鲜市场花30找人部署来的快~
所以,今天Cherry教各位玩耍docker的朋友们一套更建议的部署方法,那就是docker compose。
🔻下面是我梳理的关于docker compose的三大优势。
🙂一是容器管理简易化。
所有容器的定义、运行都可以通过文本记录在册,通过修改yml配置文件可以轻松的更改和管理这些容器。
😊二是容器管理用持续化。
所有容器的配置,例如卷、镜像、网络都在yml配置文件里,无论何时,我都可以在yml文件和数据卷的合作下,轻松重启我的docker容器而不用担心容器丢失。
😘三是容器管理更安全。
compose的容器间访问,默认是互联互通,通过hostname的使用,可以让容器不暴露端口的情况下被同个项目下的容器所访问,大大提高了安全性。
🔻本教程涉及到的NAS系统含:
群晖6X、群晖7.1,群晖7.2、威联通、铁威马、极空间、绿联UGOS、绿联UGOS Pro、Unraid、OMV等等。
其中群晖7.2、威联通、铁威马、Unraid、OMV有单独的方法, 其它的都可以使用SSH通用部署。
一、compose版本介绍
目前docker compose有两个版本,两者是可以共存的。
一个版本是docker的插件包: docker compose
另一个版本是独立包: docker-compose
对于目前新系统安装的docker工具来说,应该都是支持docker compose指令的,两者区别在于docker compose无法使用-v指令来获取版本。
这里附带docker-compose的安装方式,通过登录ssh,并输入下列指令后,任何设备都可以安装并支持docker-compose指令。
#安装docker-compose
curl -L https://hub.gitmirror.com/https://github.com/docker/compose/eleases/download/v2.29.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
#赋权
chmod +x /usr/bin/docker-compose
#验证docker-compose版本
docker-compose -v
二、通用SSH部署(绿联UGOS、绿联UGOS Pro、群晖6、群晖7.1等支持SSH功能的NAS)
对于通用型docker compose部署方法来说,前提是我们能拿到SSH权限。
这里比较特殊的一个NAS就是极空间,目前极空间的SSH权限需要通过一定操作来获取,如果无法获取的化,极空间就无法使用docker compose了。
🔻在ssh页面,我们需要来到含有docker-compose.yaml文件的目录指令启动指令。
# 来到文件夹目录
cd /volume1/docker/容器名/
# 启动容器
docker compose up -d
# 独立安装的使用如下指令
docker-compose up -d
三、群晖7.2
群晖因为无法通过CM自动创建路径,所以在我们部署项目前,将所有compose代码中涉及到的路径都新建,确保不会出错。
打开Container Manager,选择项目,点击新建,选择路径,点击下一步即可。
四、威联通
打开Container Station,选择【应用程序】,点击【创建】,将代码复制进去,点击验证后部署即可。
五、铁威马
打开Docker Manager,选择【项目】,点击【+】,选择文件路径以后,填入代码即可。
六、Unraid
在应用商城,搜索docker compose
,安装图里的插件。
安装以后,在docker里就有docker compose可视化页面了
七、OMV
OMV的docker指令来源于插件包,而其自带的插件包数量有限,因此我们需要通过安装三方插件源的模式来更新插件,需要登陆SSH。
更换软件源
apt-get install vim
vim /etc/apt/sources.list.d/openmediavault.list
将所有文本前面打星号,然后新增下面两行
deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/public/ sandworm main
deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/packages/ sandworm main
修改omvextras.list文件
vim /etc/apt/sources.list.d/omvextras.list
# 将文件修改为下面这行代码
deb https://mirrors.tuna.tsinghua.edu.cn/OpenMediaVault/openmediavault-plugin-developers sandworm main
安装第三方插件包
wget -O - https://hub.gitmirror.com/https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
八、支持compose的软件
当然,除了NAS自身外,还有很多的docker可视化应用是支持使用compose部署的,这里给出几款经典的软件,感兴趣的可以下载使用。
1、dockge
dockge是一款专门针对docker compose的可视化应用项目,由uptime kuma作者开发。该项目通过一个界面,实现了compose类目的整合。我们可以通过可视化编辑yml文件,可以轻松管理和运维compose项目。
🟡所有dockge管理的compose项目,都必须将docker-compose.yml文件放到环境变量DOCKGE_STACKS_DIR所设置的目录下。
🔻dockge部署代码
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
# Host Port : Container Port
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
# If you want to use private registries, you need to share the auth file with Dockge:
# - /root/.docker/:/root/.docker
# Stacks Directory
# ⚠️ READ IT CAREFULLY. If you did it wrong, your data could end up writing into a WRONG PATH.
# ⚠️ 1. FULL path only. No relative path (MUST)
# ⚠️ 2. Left Stacks Path === Right Stacks Path (MUST)
- /opt/stacks:/opt/stacks
environment:
# Tell Dockge where is your stacks directory
- DOCKGE_STACKS_DIR=/opt/stacks
2、portianer
老牌dockerUI项目,放在dockge后面的原因是整合效果和运维内容不如dockge那么多,不支持直接更新镜像文件。
🟡所有portianer管理的compose项目,都必须使用portainer的界面上进行新建。
🔻portainer部署代码
version: "2.1"
services:
portainer:
image: outlovecn/portainer-cn:latest
container_name: portainer
restart: always
ports:
- "9000:9000"
- "8000:8000"
volumes:
- ./dockerconfig/portainer:/data
- /var/run/docker.sock:/var/run/docker.sock