向导式堆栈管理器Dockge

经过申诉,目前博客的几个域名都恢复了,时间也延长到了 2033 年,后面还会不会出问题,老苏就不知道了


什么是 Dockge ?

Dockge 是一款时髦的、易于使用的、响应式的、自托管的 docker-compose.yaml 向导式堆栈管理器,可作为 Portainer 的替代品。使用 Dockge,您可以轻松管理compose.yaml 文件,为所有 Docker 配置需求提供一个集中的管理点。Dockge 提供了包括创建、编辑、启动、停止、重新启动和删除 Docker 配置的选项,为您的 Docker 环境提供全生命周期管理。

DockgeUptime Kuma 的创建者开发,提供了简化的用户体验,您所需的一切都可以在单个页面上方便地获得,一目了然,无需打开多个选项卡来检查日志或管理容器,确保无缝的 Docker 管理体验。

动图演示

视频演示

安装

与容器相关的应用,都需要绑定挂载 /var/run/docker.sock ,包括我们之前安装的 portainerwatchtowerGlancesNetdata 等。

什么是 /var/run/docker.sock ?

/var/run/docker.sock 是 Docker API 的主要入口,简单地说,它是 Docker 守护进程(Docker daemon)默认监听的 Unix 域套接字(Unix domain socket),容器中的进程可以通过它与 Docker 守护进程进行通信。

title

图片来自:https://betterprogramming.pub/about-var-run-docker-sock-3bfd276e12fd

但是群晖的 Docker 管理器并不支持挂载 /var/run/docker.sock 文件,所以这次我们需用命令行来安装

docker cli 安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 1.2.0

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 dockge 和 子目录
mkdir -p /volume1/docker/dockge/{data,stacks}

# 进入 dockge 目录
cd /volume1/docker/dockge

# 运行容器
docker run -d \
--restart unless-stopped \
--name dockge \
-p 5031:5001 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/stacks:/volume1/docker/dockge/stacks \
-v $(pwd)/data:/app/data \
-e DOCKGE_STACKS_DIR=/volume1/docker/dockge/stacks \
louislam/dockge:latest

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "3.8"
services:
dockge:
image: louislam/dockge:latest
container_name: dockge
restart: unless-stopped
ports:
- 5031:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- ./stacks:/volume1/docker/dockge/stackss
environment:
- DOCKGE_STACKS_DIR=/volume1/docker/dockge/stacks

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 dockge 和 子目录
mkdir -p /volume1/docker/dockge/{data,stacks}

# 进入 dockge 目录
cd /volume1/docker/dockge

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5031 就能看到注册界面

登录成功后的主界面

选择已经启动的容器,会显示 这个堆栈不由 Dockge 管理

docker-compose 安装

针对采用 docker-compose 安装的,如果要管理现有堆栈,需要将 compose 文件移动到 stacks 目录中

【备注】:docker-compose.yml 和 compose.yml 是两种常见的文件名,用于 Docker Compose 配置文件。它们在功能和使用上是相同的,只是文件名不同。

  1. 停止你的堆栈
  2. 将您的 compose 文件移至 /opt/stacks/<stackName>/compose.yaml
  3. Dockge 中,单击右上角下拉菜单中的 “扫描堆栈文件夹” 按钮
  4. 现在您应该在列表中看到您的堆栈

look scanned 为例,先停止容器

然后将 look scanneddocker-compose.yaml 文件复制到 stacks 目录中,并重命名了一下

开始扫描

现在就可以编辑、重启、更新、停止或者删除了

docker cli 安装

Dockge 只显示通过 docker-compose 安装的 stacks,不显示 docker cli 方式安装的容器,你在前面主界面看到启动了 9 个堆栈,退出了 6 个,这和 portainer 中是一致的

如果想用 Dockge 管理全部的堆栈和容器,就需要用到 docker run ...compose 的转换功能

还是以 look scanned 为例,安装时的 docker cli 命令是这样的

1
2
3
4
docker run -d \
--name lookscanned \
-p 3366:80 \
wbsu2003/lookscanned

将启动命令复制到文本框中

转换为Compose格式,给堆栈一个名字

可以保存

或者直接部署

Dockge 会根据堆栈名称创建目录

虽然 Dockge 确实解决了一些痛点,也可能是习惯使然,暂时还不不打算从 Portainer 切换到 Dockge,但会保持持续关注

参考文档

louislam/dockge: A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager
地址:https://github.com/louislam/dockge

Dockge
地址:https://dockge.kuma.pet/