iDickies
吞吐世界
iDickies

NAS探索之旅 篇六:让极空间也能docker-compose的神器Dockge

用了两三年极空间了,什么都好,就是不支持docker-compose,并且docker权限也控制的很死,想要部署带特权的容器都难。

无意中在张大妈闲逛时看到了root方法,打开新世界大门,仔细阅读后发现还是一种几乎无损的方式,在一番研究后终于成功获得权限,具体方法可以去张大妈家搜索。

我下面要说的是,在权限拿到后该怎么玩compose,并且给出自己在部署中遇到的问题解决办法,希望对大家在玩dockge时候有一些帮助。

至于有portainer为什么还要用dockge,大家喜欢哪个就哪个,这里不争论,纯玩儿,看到文末也许有答案。

一、部署dockge

前提是你已经学会进入极空间的portainer,至于拿没拿到root权限,其实并不是很重要,拿到当然最好,对于其他系统那就更轻松了,部署一个portainer即可。

另外,这里建议进入自带的portainer后,先部署一个新的portainer,一个是为了使用新版平台,另一个是防止入口封堵。

https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-1024x465.png

dockge官网:https://dockge.kuma.pet/

以下是官方的代码,请注意阅读红色字体内容

version: "3.8"
services:
  dockge:
    image: louislam/dockge:1
    restart: unless-stopped
    ports:
      - 5001:5001
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/app/data
      # 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 to find the stacks
      - DOCKGE_STACKS_DIR=/opt/stacks

进入堆栈,创建,使用以下代码部署dockge

version: "3.8"
services:
  dockge:
    image: louislam/dockge:latest
    restart: unless-stopped
    container_name: dockge
    ports:
      - 5001:5001
    privileged: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - xxxxxxxx/data/docker/dockge/data:/app/data
      - xxxxxxxx/data/docker/dockge/stacks:xxxxxxxx/data/docker/dockge/stacks
    environment:
      - DOCKGE_STACKS_DIR=xxxxxxxx/data/docker/dockge/stacks
    network_mode: bridge

这里重点修改带颜色的字体部分,其中对于极空间用户而言,前两个路径的获取是需要一点技巧的:

1、首先如果你有root权限,大可以顺藤摸瓜ssh进去一个个目录下钻,但不熟悉的话可能要找很久

2、小技巧是,通过portainer查看其他容器中有绑定本地持久化目录的配置,参考其路径,如果实在没有,可以直接在极空间docker界面创建dockge,映射好目录,虽然启动会失败,直接停止,回到portainer里重新编辑即可

3、再来就是最后那个红字,工作目录,一定记得配置的是实际路径,因为到时候dockge里创建容器时是直接加载这个路径作为工作目录的,我看很多教程没有详细说明这点,新手特别注意这里的配置。同时,两端一定要对齐,官方代码注释里明确说明了对等关系,如果不这么做,后续yaml文件和持久化文件可能身首异处。

4、最后,蓝色部分是开启特权模式的代码,对于极空间特别是z4s用户来说,可能是因为docker引擎版本过低,导致部署的容器权限都不够,因此需要增加这行代码来解决一些因为权限问题导致容器反复重启的情况。

基本上这样之后就可以正常启动了,注意端口冲突即可。

二、在dockge里部署容器

这里以部署halo为例,官方教程:https://docs.halo.run/2.8/getting-started/install/docker-compose/

我们用最简单的仅创建halo实例的方式部署,在dockge里创建一个compose,堆栈名字为halo,右边输入如下代码:

version: "3"

services:
  halo:
    image: halohub/halo:2
    container_name: halo
    restart: on-failure:3
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"
    privileged: true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s          
    command:
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd

同样记得极空间z4s用户要加入特权模式代码。

https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-1-1024x609.png

点击部署按钮即可:

https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-2-993x1024.png
https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-3-1024x870.png

一会儿就启动成功了,启动成功后,你再回portainer里会发现,本地持久化目录落地到之前那个工作目录下了,也就是“xxxxxxxx/data/docker/dockge/stacks”里。

这就是刚才强调的原因,如果部署dockge时候你填的是网上大多教程里的“/opt/stacks”,你可能死活都找不到持久化目录,因为它需要你ssh到系统根目录下找这个路径。

https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-4.png
https://dickies.myds.me:56789/wp-content/uploads/2024/05/image-6-1024x444.png

至此,极空间也可以支持docker-compose了,还能用这么现代化的界面来部署和更新(对,这个东西portainer可没有),很nice。

赞赏
# # # #
首页      科技      NAS      NAS探索之旅 篇六:让极空间也能docker-compose的神器Dockge

老鬼迪克

文章作者

黑夜给了我黑色的眼睛,而我却用它,寻找光明。

发表回复

textsms
account_circle
email

iDickies

NAS探索之旅 篇六:让极空间也能docker-compose的神器Dockge
用了两三年极空间了,什么都好,就是不支持docker-compose,并且docker权限也控制的很死,想要部署带特权的容器都难。 无意中在张大妈闲逛时看到了root方法,打开新世界大门,仔细阅读…
扫描二维码继续阅读
2024-05-18